我遇到了一些麻烦,包含字符串像这样的文本文件: Grandchamp乐-CH \ 303 \ 242teau处理字符串与八进制的ASCII码(在Java中)
这是维基百科页面的名称顺便一提。两个asciis代表“我认为。
是否有任何软件,可以轻松地转换上面的字符串到 格朗德尚莱沙托 也许 Grandchamp乐-CH%C3%A2teau
我宁愿一个Java absed的解决方案,但是任何其他想法也一样! 任何建议或提示非常感谢!
我遇到了一些麻烦,包含字符串像这样的文本文件: Grandchamp乐-CH \ 303 \ 242teau处理字符串与八进制的ASCII码(在Java中)
这是维基百科页面的名称顺便一提。两个asciis代表“我认为。
是否有任何软件,可以轻松地转换上面的字符串到 格朗德尚莱沙托 也许 Grandchamp乐-CH%C3%A2teau
我宁愿一个Java absed的解决方案,但是任何其他想法也一样! 任何建议或提示非常感谢!
这是为了实现自己的目标稍微哈克的方式:
final String name = "Grandchamp-le-Ch\\303\\242teau";
final Matcher m = Pattern.compile("\\\\(\\d{3})").matcher(name);
final StringBuffer out = new StringBuffer();
while (m.find()) m.appendReplacement(out, String.valueOf((char)parseInt(m.group(1), 8)));
m.appendTail(out);
final String decoded = new String(out.toString().getBytes(ISO_8859_1), UTF_8);
System.out.println(decoded);
工作原理:
的代码将打印出
Grandchamp-le-Château
给你:
String myString = "Grandchamp-le-Ch\303\242teau";
byte[] byteArray = myString.getBytes("ISO-8859-1");
String result = new String(byteArray, "UTF-8");
System.out.println(result);
此打印:
Grandchamp-le-Château
你是依靠Java编译器来分析你的八进制字符。生成的字符串*不会包含八进制符号。尝试将你的字符串写入一个文件并阅读它。 – 2014-09-13 10:25:18
这会打印出你想要的东西,因为Java编译器替你替换了。要试验OP的字符串,请在编译的程序中使用两个斜杠。 – dasblinkenlight 2014-09-13 10:25:22