私はISO-8859-1のコード化された文字列を第3のシステムから読みました。私は文字列とこの文字列を分割する必要があります。 65533ですJavaスプリットISO-8859-1 "垂直バーが壊れている"文字列
String [] parts = isoString.split("¦");
私はこだわっていますが... |のJavaでの値(UTF-8)はこれチャーは、値166 は、次のコードは動作しませんISO-8859-1にありこれをどうすれば解決できますか?
私はISO-8859-1のコード化された文字列を第3のシステムから読みました。私は文字列とこの文字列を分割する必要があります。 65533ですJavaスプリットISO-8859-1 "垂直バーが壊れている"文字列
String [] parts = isoString.split("¦");
私はこだわっていますが... |のJavaでの値(UTF-8)はこれチャーは、値166 は、次のコードは動作しませんISO-8859-1にありこれをどうすれば解決できますか?
の作業コード ありがとう:
String s = new String(new byte[] {'a', 'b', (byte) 166, 'c', 'd'},
StandardCharsets.ISO_8859_1);
String[] split = s.split("\u00a6");
System.out.println("split = " + Arrays.toString(split));
// prints split = [ab, cd]
あなたproperly decode your ISO-8859-1 string into a Unicode representationへの最初の必要性あなたがUnicode文字列リテラル使用して、それを分割することができますように、あなたは(|
)を供給 - あなたはのUnicodeのエンコーディングを使用してプログラムをコンパイルしていると仮定コース。
https://en.wikipedia.org/wiki/Vertical_bar#Solid_vertical_bar_vs_broken_barによると、この文字はユニコードでU + 00A6(10進数は166)です。だからあなたは単純に '.split(" \ u00a6 ")' –
を使うことができます.Javaには "ISO-8859-1コード化された文字列"というものはありません。だから私はあなたの本当の問題はおそらく、あなたがそれを得るソースから文字列を正しくデコードしていないと思うでしょう。しかし、文脈がなくても1行のコードしか表示しないので、わかりません。 – kdgregory
正しいエンコーディングでプログラムをコンパイルしていない可能性もありますので、 'split()'に渡す文字列はあなたが思うものではありません。 * JB Nizet *の答えがうまくいく(これはどんなプログラムでも非ASCII文字を参照するための最良の方法です)。 – kdgregory