Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中汉字(UTF-8编码)的模式匹配_Java_String_Cjk - Fatal编程技术网

Java中汉字(UTF-8编码)的模式匹配

Java中汉字(UTF-8编码)的模式匹配,java,string,cjk,Java,String,Cjk,我需要检查中文地址中是否包含中国省份 我能很容易地读写汉字 我尝试使用String的indexOf()方法来检查一个省(例如。广东) 包含在地址中(中国 广东). 但是,它总是返回-1 当我尝试检查数字时(例如,103是否包含在9910399中),它工作正常 我需要做一些不同的事情来处理UTF-8字符串匹配吗? 谢谢 Matt我刚刚尝试了您的示例,虽然我的系统中没有中文字体,但indexOf()对我来说效果很好 因此,请检查源文件(*.java)的编码。例如,如果您使用eclipse,请在Win

我需要检查中文地址中是否包含中国省份

我能很容易地读写汉字

我尝试使用String的indexOf()方法来检查一个省(例如。广东) 包含在地址中(中国 广东). 但是,它总是返回-1

当我尝试检查数字时(例如,103是否包含在9910399中),它工作正常

我需要做一些不同的事情来处理UTF-8字符串匹配吗? 谢谢
Matt

我刚刚尝试了您的示例,虽然我的系统中没有中文字体,但indexOf()对我来说效果很好

因此,请检查源文件(*.java)的编码。例如,如果您使用eclipse,请在Window/Preferences/General/Workspace/Text file encoding下进行检查。我使用的是UTF-8

第二个想法是java编译器使用的编码。在eclipse的情况下,您不必说任何话。我认为对于
javac
,您可能应该使用
-encoding
明确地设置编码。否则,可能会使用默认的OS编码


祝你好运。

Java
String
在内部始终是UTF-16,因此无论您遇到什么问题,都与UTF-8无关。您是否100%确定字符串中的字符与您正在搜索的字符完全相同?请使用
System.out.println((int)s.charAt(i))进行检查
两边都有。你的示例对我很有用,你检查过你的.java文件是否使用正确的编码保存了吗?嗨,Alex,非常感谢!我意识到我不够具体。你完全正确-如果我直接使用字符串,上面的示例就可以了。问题发生在我从文件中读取这些字符串时。我打印了ac实际字符,我注意到ASCII 34出现在Unicode字符之前。看起来我没有中文特有的问题-这是一个文件读取问题。我有两个文件-省和地址。省中有字符a,地址中有字符AB。当我使用readline()读取并打印它们时,我看到以下打印出来的内容(1) 对于省,而只有-34:65:34(2)对于地址,只有AB-34:65:66:34,我不确定我应该做什么来确保省与地址匹配,或者A与地址匹配AB@Matt-AlexR是正确的;查看采用编码的相关I/O方法(字符串ID或字符集)输入。您必须始终根据需要对文本数据输入(包括Java源文件)进行解码。有关基本入门知识,请参阅。有关可帮助诊断问题的基本应用程序,请参阅。