2015-02-12 6 views
1

Я конвертирую CSV-файл из Tatoeba проект. Он содержит японские символы. Я вставляю данные в базу данных SQLite. Вставка идет без проблем, но символы отображаются неправильно. Если вставить непосредственно:Японский символ не отображается правильно преобразование CSV-файла

  String str = content_parts[2]; 
      sentence.setValue(str); 

Получение значения, как это:

ãã¿ã «ã¡ãã £ ã¨ãããã®ããã £ ã|ãããã

Я попытался для декодирования в UTF8 от JIS:

  String str = content_parts[2]; 
      byte[] utf8EncodedBytes = str.getBytes("JIS"); 
      String s = new String(utf8EncodedBytes, "UTF-8"); 
      sentence.setValue(s); 

JIS:

$ B!)!)!)!)!)!)!)!)!)!)!!!!!!!!!!!!!!!!!!!)!! !)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!р!)!)!)!) !!!!!!!!!!))))))))))) (B

Shift-JIS:

???? \ ????? ? Н?} ??????????????????????? N? N ?????????

Shift_JIS:

???? \ ????????????????????????? N ?? ??????????????????????

CSV файл (если открыт Excel 2010)

п гЃЌгЃїгЃ «гЃЎг, ‡ гЃЈгЃЁгЃ-гЃџг,,гЃ®г,'г,,гЃЈгЃ|гЃЌгЃџг, € гЂ,

Что я делаю неправильно? Как решить эту проблему?

+0

Какую кодировку использует этот файл в файле? – immibis

+0

Может быть, проблема связана с кодировкой базы данных, а не с отображением java – ortis

+0

@immibis, честно говоря, я не знаю. теперь я ищу, как определить кодировку –

ответ

0

Если вы все еще ищете решения, см ссылку ниже

setting-a-utf-8-in-java-and-csv-file and handle Japanese characters

csv-reports-not-displaying-japanese-characters

Вкратце, добавьте BOM (отметка порядка байтов) символов в файловом OutputStream перед передачей его OutputStream писатель ,

Содержимое строки = "некоторая строка для записи в файле (на любом языке)";

FileOutputStream fos = new FileOutputStream ("D: \ csvFile.csv");

fos.write (239);

fos.write (187);

fos.write (191);

Writer w = new BufferedWriter (новый OutputStreamWriter (fos, StandardCharsets.UTF_8));

w.написать (содержание);

w.close();

Упование это поможет

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