2016-04-02 12 views
1

私はISO-8859-1のコード化された文字列を第3のシステムから読みました。私は文字列とこの文字列を分割する必要があります。 65533ですJavaスプリットISO-8859-1 "垂直バーが壊れている"文字列

String [] parts = isoString.split("¦"); 

私はこだわっていますが... |のJavaでの値(UTF-8)はこれチャーは、値166 は、次のコードは動作しませんISO-8859-1にありこれをどうすれば解決できますか?

+2

https://en.wikipedia.org/wiki/Vertical_bar#Solid_vertical_bar_vs_broken_barによると、この文字はユニコードでU + 00A6(10進数は166)です。だからあなたは単純に '.split(" \ u00a6 ")' –

+0

を使うことができます.Javaには "ISO-8859-1コード化された文字列"というものはありません。だから私はあなたの本当の問題はおそらく、あなたがそれを得るソースから文字列を正しくデコードしていないと思うでしょう。しかし、文脈がなくても1行のコードしか表示しないので、わかりません。 – kdgregory

+0

正しいエンコーディングでプログラムをコンパイルしていない可能性もありますので、 'split()'に渡す文字列はあなたが思うものではありません。 * JB Nizet *の答えがうまくいく(これはどんなプログラムでも非ASCII文字を参照するための最良の方法です)。 – kdgregory

答えて

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] 
関連する問題