2016-04-02 33 views
1

Üçüncü bir sistemden bir ISO-8859-1 kodlu String okurum. Bu dizeyi ¦ ile ayırmalıyım. 65533.Java Split ISO-8859-1 "Kırık dikey çubuk" ile dize

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

Ben şaşırıp olduğunu ... | Java değeri (UTF-8), çünkü bu karakter, değer 166. Aşağıdaki kod çalışmaz ISO-8859-1 vardır Bunu Nasıl Çözebilirim? Teşekkür

+2

https://en.wikipedia.org/wiki/Vertical_bar#Solid_vertical_bar_vs_broken_bar'a göre, bu karakter, unicode cinsinden, U + 00A6'dır (ondalık olarak, 166'dır). Yani sadece .split ("\ u00a6") ' –

+0

kullanabilirsiniz. Java'da" ISO-8859-1 kodlu bir String "diye bir şey yoktur. Yani bence asıl sorunun büyük olasılıkla ipi, aldığınız herhangi bir kaynaktan doğru olarak çözmemenizdir. Ama bunu anlayamayız çünkü bağlam olmadan sadece bir kod satırı gösterirsiniz. – kdgregory

+0

_is_, programınızı doğru kodlama ile derlememenize rağmen, 'split()' ye ilettiğiniz dize, sizin düşündüğünüz gibi değil. Bu durumda * JB Nizet * 'nin cevabı işe yarar (aynı zamanda herhangi bir programda ASCII olmayan karakterlere başvurmanın en iyi yoludur). – kdgregory

cevap

1

Çalışma kodu:

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]