gpt4 book ai didi

java - 使用java从unicode解码字符

转载 作者:行者123 更新时间:2023-11-30 23:03:29 25 4
gpt4 key购买 nike

我无法将中文字符插入 mysql。所以我想这样做。我有一张 excel 表,上面有汉字。比如秀昭等等。

我使用从 SO 获得的以下代码将它们转换为 unicode 表示形式,如 \uxxx,然后存储在 MySQL 中。

private static String escapeNonAscii(String str) {
List<String> arr = new ArrayList<String>();
StringBuilder retStr = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
int cp = Character.codePointAt(str, i);
System.out.println("cp="+cp);
int charCount = Character.charCount(cp);
if (charCount > 1) {
i += charCount - 1; // 2.
if (i >= str.length()) {
throw new IllegalArgumentException("truncated unexpectedly");
}
}

if (cp < 128) {
retStr.appendCodePoint(cp);
} else {
retStr.append(String.format("\\u%x", cp));
arr.add(String.format("\\\\u%x", cp));
}
}
return retStr.toString();
}

值已正确存储。所以现在我需要将它们显示回来。当我尝试

System.out.println("\u8BF7\u5728\u6B64\u5904");

它给了我正确的输出,比如,

`请在此`

但是当我从数据库中读取并喜欢

System.out.println(rs.getString(1).trim().toString() + " from DB");

打印出来

`\u8BF7\u5728\u6B64\u5904`

可能是什么问题?我错过了什么吗?请帮忙。

最佳答案

转义字符只会在编译前处理。要从数据库中存储和检索数据,您只需考虑两件事: 确保您读取的数据具有正确的编码。并且在打印数据时设置了正确的编码。如果您在 Windows 机器上读取数据,则可能必须使用 cp* 编码。只需使用 InputStreamReader 并设置字符集。现在您在 JVM 中有了数据。内部编码是一些utf-16。现在您使用了 4 类 jdbc,您不必担心编码问题,除非您的数据库需要一种能够存储数据的编码。 UTF-8 或 Unicode 将达到目的。请查阅您的 jdbc 文档以了解要设置的属性。有时您已明确设置编码 (jdbc:mysql://localhost:3306/?useUnicode=yes&characterEncoding=UTF-8)。输出数据时,有时输出必须具有特定的编码。通常,您的 JVM 使用默认系统字符集运行,但您需要另一个字符集,例如在呈现 HTML 文件时。

关于java - 使用java从unicode解码字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22893914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com