java 将utf-8 2字节字符转换为1字节字符

标签 java encoding utf-8

类似的问题还有很多,但没有人帮我。

utf-8 可以是 1 个字节或 2,3,4。

ISO-8859-15 始终为 2 个字节。

但是我需要 1 字节字符,例如代码页代码“page 863”(IBM863)。

http://en.wikipedia.org/wiki/Code_page_863

例如,“é”是代码点 233,在 utf 8 中长度为 2 个字节,如何将其转换为 Java 中的 IBM863(1 个字节)?

可以在 JVM -Dfile.encoding=UTF-8 上运行吗?

当然,转换意味着可能会丢失一些字符,因为 IBM863 较小。 但我需要语言特定的字符,例如法语、è、é 等。

编辑1:

 String text = "text with é";

 Socket socket = getPrinterSocket( printer);
 BufferedWriter bwOut = getPrinterWriter(printer,socket);
 ...
 bwOut.write("PRTXT \"" + text + "\n");
 ...
 if (socket != null)
 {
            bwOut.close();
            socket.close();
 }
 else
 {
            bwOut.flush();
 }

它将成为配备 Fingerprint 8.2 的标签打印机。

编辑2:

private BufferedWriter getPrinterWriter(PrinterLocal printer, Socket socket)
throws IOException
{
        return new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
}

最佳答案

首先:不存在“1 字节字符”这样的东西,或者事实上,无论 n 是什么,都不存在“n 字节字符”。

在Java中,char是一个UTF-16代码单元;根据 (Unicode) 代码点,需要一个或两个 char 来表示一个代码点。

您可以使用以下方法:

您可以从 Charset.new{Encoder,Decoder}() 方法获取后两者。

这里至关重要的是要知道您的输入到底是什么:它是一个代码点,还是一个编码的字节数组?您必须根据此情况调整您的代码。

最后一点:file.encoding 设置定义了当您未指定要使用的字符集时要使用的默认字符集,例如在 FileReader 构造函数中;您应该避免不指定字符集!

关于java 将utf-8 2字节字符转换为1字节字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588828/

相关文章:

php - 如何将 Amazon MWS 响应中的 UTF-8 转义字符串转换为正确的 UTF-8?

java - 检查单击复选框的条件

java - 正确设置插件后,Maven 无法找到或加载主类

mysql - latin-1 到 utf-8 数据库

git - 提交编码更改

c# - 将邮件编码为 : uri

php - 如何使用 php utf8 在数据库中插入 ö/ä/ü

java - Hibernate Persistencebag 从列表中删除元素

java - 将java代码嵌入到模板中

java - 响应 SOAP 请求时的 UTF-8 问题