我有一个Java应用程序,其中从UNIX中的文件中读取字符串。然后,使用URL POST方法将字符串传递给另一个应用程序。但是,当存在特殊字符时会出现问题,例如:
〜 ^ [ ] \ { } |
我正在使用StringBuilder构建URL:
new StringBuilder() .append("message=").append(message).toString()
是否有关于如何将这些字符从UNIX编码到Java的标准?我相信这是问题所在。
答案 0 :(得分:1)
这些是用于正则表达式的字符。
所以在某处你将字符串放在预期正则表达式的位置。
编码不能是这里的错误(普通的ASCII函数)。但请注意,FileReader是一个旧的实用程序类,它使用默认的平台编码读取文件。 当文件采用已知编码时,比如说UTF-8,最好是:
Path path = file.toPath();
try (BufferedReader in = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
...
}
答案 1 :(得分:0)
要从Java文件中正确读取字符,您需要指定字符集。例如。像这样(为了简洁而遗漏了错误处理):
String charset = "UTF-8"; // replace with what you are really using in your Unix system
Reader reader = new InputStreamReader(new FileInputStream(file), charset);
// use the reader...
答案 2 :(得分:0)
网址要求对某些字符进行编码。这与Unix或Java无关;它是URL规范的一部分。
在Java中,您可以使用URLEncoder.encode
方法对任意文本进行编码,使其适合网址:
new StringBuilder()
.append("message=")
.append(URLEncoder.encode(message, "UTF-8"))
.toString()