String 类的 Java 1.6 方法不适用于所有字符

标签 java string methods char character

我有一个由“ò、ý、ü、û、ú、ù、÷、ö、ï、î​​”等字符组成的字符串。在使用 Java 1.6 编译该类之前,myString.split("ý");myString.contains("ý"); 等方法可以工作。使用命令行编译类后,这些方法不适用于这些字符。 我必须使用 Java 1.6。

有什么办法可以避免这个问题吗?

最佳答案

默认情况下,Java 源文件以平台默认编码存储,如果未指定 -encoding,这就是 javac 读取文件的方式。

如果您在 Eclipse 中将字符键入/粘贴到源文件中,Eclipse 会自动将编码更改为 UTF-8(我相信它会首先提示您,但我不确定)。

在 Eclipse 中,理论上每个 Java 源都可以采用不同的编码。 Eclipse 会记住每个源文件的编码,您可以在 Eclipse 的文件属性对话框中查看和/或更改该编码。

如果 Eclipse 已将编码更改为 UTF-8,则在 Eclipse 中编译将正常工作,但在外部编译,例如通过调用 javac 或使用 Ant,将不起作用,因为默认情况下它们将使用平台默认编码读取源文件。

因此,如果您有混合的源文件编码,则必须将它们全部更改为相同的编码,因此使用 javac 可以指定通用编码。您有两个选择:

  • 将所有文件转换为UTF-8,并指定-encoding UTF-8
  • 将所有文件转换为平台默认编码,并对该编码不支持的字符使用 unicode 转义符,对于 ý\u00FD .

关于String 类的 Java 1.6 方法不适用于所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34648077/

相关文章:

java - 用 Switch 打击,降低圈复杂度 java

java - 在 Sqlite 中使用 where 子句更新查询

java - 想要编写简单的收银机应用程序,在我的头上?

java - 字节串到字节数组

Objective-C - iVar 作用域方法变量?

JavaScript - "this"的所有者

java - 使现有实例可供我的 Jersey 资源使用?

c - 算法查找 2 个字符串中常见字符的数量

java - 删除java中字符之前和之后的字符

c++ - 如何将类的方法传递给 C++ 中的另一个函数?