gpt4 book ai didi

java - 如何在 java 中转换 unicode 以更正 CHARSET 以在 LINE-PRINTER 上打印

转载 作者:行者123 更新时间:2023-11-30 10:52:49 25 4
gpt4 key购买 nike

我使用直接打印到我的 Star TSP700 打印机。打印机设置为 852 Latin-2。因此,在我将文本发送到打印机之前,我将其转换为“IBM852”,但它不起作用。我在字符之间得到了很多不需要的/未知的字符。这发生在打印机打印 Š、Ç、Ž 和 š、ž、č 的地方。我认为 UNICODE 字符串表示和接受 ASCII 字符的打印机有问题?有人可以帮忙吗?

转换为 IBM852

public static String c( String p_tekst, String p_cp ) throws UnsupportedEncodingException {
byte b[] = p_tekst.getBytes( p_cp );
String w_charset;
w_charset = new String(b);
return w_charset;
}

写入打印机 - 我将转换后的字符串发送为:

FileWriter out = new FileWriter("lpt3");
out.write(...);
out.close();

最佳答案

我认为一定有方法可以在不浪费大量纸张的情况下学习 java 中的字符编码,但如果您真的必须这样做,那么:

您需要使用 getBytes() 的重载,它接受一个 String charsetName 作为参数,从而获得 852 中的字节数组Latin-2 字符集。然后,您必须再次将其转换回字符串;相反,您需要使用 OutputStream 将这些字节写入打印机。

或者,您可以使用为正确的 Charset 构造的 OutputStreamWriter 将字符串直接写入打印机。

编辑

这是一个例子。我没有尝试,因为我不想浪费纸张。我假设您的“lpt3”有效,因为您说您设法打印了一些东西,尽管字符集错误。

public static void main( String[] args ) throws Exception
{
Charset charset = Charset.forName( "Cp852" );
try( OutputStream outputStream = new FileOutputStream("lpt3") )
{
try( Writer writer = new OutputStreamWriter( outputStream, charset ) )
{
writer.write( "╔════════════════════════════════════════╗" );
writer.write( "║ this will be printed in MS-DOS Latin-2 ║" );
writer.write( "╚════════════════════════════════════════╝" );
}
}
}

关于java - 如何在 java 中转换 unicode 以更正 CHARSET 以在 LINE-PRINTER 上打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34266193/

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