后来进行角色匹配时,我还希望能够做类似的事情:
if(text.indexOf("£")>=0)
我不知道Java是否会认识到该角色并做我想做的事。
任何意见都将不胜感激。预先感谢您的非ASCII字符要么在输入到Java或输出时丢失。
Java在内部使用Unicode字符串,因此您必须告诉它如何解码输入和编码输出。
LET假设HttpClient
PrintWriter out = new PrintWriter(outDir+name+".html", "UTF-8");
然后用文本编辑器(例如Notepad ++)检查您的output.html,以UTF-8模式运行,以确保您仍然可以看到非ASCIIchars.
如果您不能这样做,则需要将注意力转向输入-HTTPCLCCLIENT。请参阅此答案:如果您的远程服务器躺在字符编码上,则使用HTTPCLIENT3.1
编码的SET响应编码。 回答您的子问题。如果您告诉java编码源代码在什么字符中,则可以在源代码中使用非ASCII字符,例如“£”。 ,您可以简单地在属性中设置文件的字符编码,而IDE将完成其余的。最便携的事情是将您的角色编码在IDE中设置为“ UTF-8”。 Eclipse允许您为整个项目或单个文件设置字符编码。
使用以下代码:
javac
字符编码方案是一个或多个编码的字符集和一组八位字节(八位字节)序列之间的映射。 UTF-8,UTF-16,ISO 2022和EUC是字符编码方案的示例。编码方案通常与特定的编码字符集有关;例如,UTF-8仅用于编码Unicode。但是,有些方案与多个编码字符集有关。例如,EUC可用于编码各种亚洲编码字符集中的字符。
FileOutputStream fileStream = new FileOutputStream(outDir+name+".html");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileStream, StandardCharsets.UTF_8)
PrintWriter out = new PrintWriter(outputStreamWriter);
用UTF-8编写HTML
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
1。
PrintWriter out = new PrintWriter(outDir+name+".html", "UTF-8");
这花了一个星期的时间来解决,我正在尝试各种各样的事情。我在Java 1.8上运行,并尝试使用Unicode字符抓住API响应,而仅替换更具体的表情符号(在\ uaaaa -\ uffff的范围内),这会导致我问题并变成“?”。
String res2 = res.replaceFirst("charset=([-\\w]+)", "charset=UTF-8")
.replaceFirst("charset=([\"'])([-\\w]+)\1", "charset=$1UTF-8$1");
if (res2 == res) { // No charset given
res2 = res.replaceFirst("(?i)</head>",
"<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />$0");
}
res = res2;