gpt4 book ai didi

java - 将 Java 字符串转换为 Windows-1258

转载 作者:行者123 更新时间:2023-11-30 10:41:57 24 4
gpt4 key购买 nike

对所有越南本地人的特殊要求;-)。

我正在尝试使用 Windows-1258 将纯 Java 字符串转换为字节数组代码页。此字符串中的内容是越南语,但考虑到 Windows-1258 是为越南语设计的,所以这应该不是什么大问题。遗憾的是,某些字符没有正确转换。

我的测试用例:

final Charset wcp1258 = Charset.forName("Cp1258");

final String text = "Việt là khó khăn";
byte[] textArr = text.getBytes(wcp1258);

for (int i = 0; i < textArr.length; i++) {
System.out.println(String.format("'%s' maps to: 0x%x", text.charAt(i), textArr[i]));
}

结果是:

'V' maps to: 0x56'i' maps to: 0x69'ệ' maps to: 0x3f <--'t' maps to: 0x74' ' maps to: 0x20'l' maps to: 0x6c'à' maps to: 0xe0' ' maps to: 0x20'k' maps to: 0x6b'h' maps to: 0x68'ó' maps to: 0xf3' ' maps to: 0x20'k' maps to: 0x6b'h' maps to: 0x68'ă' maps to: 0xe3'n' maps to: 0x6e

在那里你可以看到一个字符映射到3f,也就是Windows-1258中的问号。 .

我做了一些研究,发现 Windows-1258 通过组合变音符号来创建某些字符。这些字符中的一个正好映射到问号。

如何才能正确转换?我认为问题可能与某些 unicode 字符没有有效转换为 Windows-1258 所需的组合有关。我尝试将 Normalizer 类添加到组合中,但没有取得太大成功。

如果您想知道,我需要这种编码来控制收据打印机。收据打印机采用 Windows-1258 或 TCVN3 越南语字节数组。

最佳答案

如果找不到更好的解决方案,您始终可以创建自己的从 Unicode 到字节的映射以发送到设备。

关于java - 将 Java 字符串转换为 Windows-1258,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38302744/

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