2013-07-24 3 views
2

У меня есть этот текст в текстовом файле, который закодирован в UTF-8 o|▰╹ェ╹|ツ end (◕□◕✿) end ┐(❛△❛;), когда я пытаюсь прочитать это в java, вывод всегда такой: ?o|??ェ?|ツ end (?□??) end ┐(?△?;) Я даже пытаюсь закодировать это в Юникоде, но еще получить тот же текст, вот мой код, чтобы получить печать файлаКак читать специальные символы в java

File fileDir = new File("src/mycharacters.txt"); 

BufferedReader reader = new BufferedReader(new InputStreamReader(
     new FileInputStream(fileDir), "UTF-8")); 
String myText = null; 
String line = null; 
while ((line = reader.readLine()) != null) { 
    myText = line; 
} 

System.out.print(myText); 
+0

При чтении файла вы указывали набор символов как UTF-8, чтобы он работал. Но как насчет System.out? Вы уверены, что он совместим с Unicode? – Thilo

+4

Поддерживает ли шрифт терминала шрифты, которые вы используете? – MathSquared

+0

Теперь я вижу, что терминал не поддерживает кодировку UTF-8. Я пишу выходной файл в другом текстовом файле, и он возвращает текст, который я хочу, спасибо MathSquared11235 – DevfaR

ответ

4

Ваш чтение прекрасно. Ваша проблема . AFAIK System.out имеет кодировку, отличную от UTF. Попробуйте обернуть его в PrintStream или PrintWriter:

niceOut = new PrintStream(System.out, true, "UTF-8"); 

EDIT: Ой, подождите, может быть @ MathSquared11235 на самом деле правильно - я вижу ツ в вашем выводе, который следует указать выход UTF. Итак ... Шрифт.

+0

Если OP скопировал его поверх шрифта, это не проблема как символы будет перемещаться как есть. – hexafraction

+0

Я использовал printstream и попытался напечатать так же, как этот niceOut.print (myText), а вывод - это «? ソ o | ​​笆 ー 笊 ケ 繧 ァ 笊 ケ | 繝? End (笳 補 味 笳 補 愾) end 笏? 笶 帚 無 笶 幢 シ?» – DevfaR

+0

В каком случае, вы уверены, что ваш файл находится в UTF-8, а не, скажем, в EUC-JP или ShiftJIS? (Я мог бы быть совершенно не прав здесь, хотя ...) – Amadan

Смежные вопросы