UTF-8无法正确传递日语字符(平假名和片假名)字符串作为参数

时间:2019-01-18 09:58:38

标签: java eclipse utf-8 shift-jis

例如,我需要的文件在此文件路径中找到,它将作为参数传递:

"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 :(得分:0)

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对象,则可以将其转换为任何字符集。