java字符串中的unicode字符

问题描述 投票:0回答:3

后来进行角色匹配时,我还希望能够做类似的事情:

if(text.indexOf("£")>=0)

我不知道Java是否会认识到该角色并做我想做的事。

任何意见都将不胜感激。预先感谢
	
您的非ASCII字符要么在输入到Java或输出时丢失。

Java在内部使用Unicode字符串,因此您必须告诉它如何解码输入和编码输出。

LET假设

HttpClient

正确地解释了远程服务器的响应并正确解码响应。
java string unicode utf-8 character
3个回答
3
投票

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

charset

字符编码方案是一个或多个编码的字符集和一组八位字节(八位字节)序列之间的映射。 UTF-8,UTF-16,ISO 2022和EUC是字符编码方案的示例。编码方案通常与特定的编码字符集有关;例如,UTF-8仅用于编码Unicode。但是,有些方案与多个编码字符集有关。例如,EUC可用于编码各种亚洲编码字符集中的字符。


2
投票
有两个步骤。首先,您将加载的字符串(在Java总是Unicode中)保存为UTF-8。但是,由于浏览器需要知道编码,因此它在文件系统上只有HTML META标签。因此,您需要确保有类似的东西

FileOutputStream fileStream = new FileOutputStream(outDir+name+".html"); OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileStream, StandardCharsets.UTF_8) PrintWriter out = new PrintWriter(outputStreamWriter);

2.

用UTF-8编写HTML <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

1。

PrintWriter out = new PrintWriter(outDir+name+".html", "UTF-8");

2
投票

这花了一个星期的时间来解决,我正在尝试各种各样的事情。我在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;

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.