java - 当我尝试包含乌尔都语字符串时,为什么会出现编译错误?

标签 java unicode utf-8 illegal-characters

我正在尝试添加一个乌尔都语字符串Ùò־,如下所示:

class UnicodeCheck {
  public static void main(String args[]) {
   try {
    File f = new File("C:/Users/user/Desktop/unicodecheck.txt");
    FileWriter writer = new FileWriter(f);
    writer.write("غزل");
    writer.close();
   } catch(Exception exc) {
       exc.printStackTrace();
     }
 }
}

当我尝试编译上述程序时,出现此错误。

UnicodeCheck.java:1: illegal character: \187
class UnicodeCheck {
 ^
UnicodeCheck.java:1: illegal character: \191
class UnicodeCheck {
  ^
2 errors

我不明白这个错误。为什么会出现此错误以及如何克服此错误?

最佳答案

文件开头的字符来自一些文本编辑器喜欢插入到文件开头的字节顺序标记。然而,Java 编译器不接受带有 BOM 的文件。您有两个选择:

  1. 使用允许以 Unicode 格式保存文件而无需 BOM 的文本编辑器,例如 Notepad++。
  2. 在源代码中仅使用 ASCII 字符。在需要 Unicode 字符的地方使用 \uXXXX -转义码。 JDK 附带了一个实用程序,用于将“ native ”文本转换为这种编码,称为 native2ascii。例如,

    writer.write("غزل");
    

    将转换为

    writer.write("\u063a\u0632\u0644");
    

关于java - 当我尝试包含乌尔都语字符串时,为什么会出现编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12832114/

相关文章:

java - 在 ImageView 中显示从数据库下载的图像

Java 使用 Swing 接收 CORBA 回调

java - 如何从使用 StandardCharsets.US_ASCII 编码的字节中获取初始字符串?

PHP:如何创建编码为 "UTF-8 without BOM"的文件

c# - 从 Internet 下载 HTML 后,字符串中的字符发生了变化

python - 从字符串中提取所有表情符号并忽略 Python 中的 Fitzpatrick 修饰符(肤色等)

java - 如何将 JDom 文档的内容放入 File 对象中?

mysql - 使用经典 ASP 导致 MySQL 崩溃的表情符号字符

utf-8 - Google Actions - 使用 AWS API Gateway 时的 UTF-8 解码

perl - 在 Perl 中打印到文件与打印到 shell