UTF-8 не может правильно передать строки японских символов (хирагана и катакана) в качестве аргумента - PullRequest
0 голосов
/ 18 января 2019

Например, нужный мне файл находится по этому пути и будет передан в качестве аргумента:

"C:\Users\user.name\docs\jap\あああいいいうううえええおおおダウンロード\filename.txt"

Я использовал этот код для декодирования символов:

String new_path = new String(args[0].getBytes("Shift_JIS"), StandardCharsets.UTF_8);
System.out.println(new_path);

Тем не менее, вывод:

C:\Users\user.name\docs\jap\あああい�?�?�?�?�?えええおおお�?ウンロード\filename.txt

Некоторые символы не были правильно декодированы.Я уже изменил кодировку текста и кодировку консоли на UTF-8, но она все еще не работала.

Но если бы я просто печатал ее регулярно, она отображалась просто отлично.

System.out.println("C:\\Users\\user.name\\docs\\jap\\あああいいいうううえええおおおダウンロード\\filename.txt");

, который отображает:

C:\Users\user.name\docs\jap\あああいいいうううえええおおおダウンロード\filename.txt

Пожалуйста, скажите мне, как читать другие символы, это действительно будет большой помощью.Спасибо!

1 Ответ

0 голосов
/ 18 января 2019
public static void main(String[] args) throws UnsupportedEncodingException {
    // it is your code
    String newPath = new String(args[0].getBytes("Shift_JIS"), StandardCharsets.UTF_8);
    System.out.println(newPath);
    // instead of your code
    newPath = args[0];
    System.out.println(newPath);
}

может быть, вы можете показать "あ あ あ い い い う う う え え お お お ダ ウ ウ ド ー ド".

если вы создаете объект String с байтовым массивом и соответствующим набором символов, вы можете преобразовать его в любой набор символов для него.

...