我想使用打印机(Windows驱动程序)在vb 6项目中打印日文。Vb6打印机对象打印日文
我的项目是在日文Windows环境下(操作系统是英文原文,设置日本地区和相关语言)。
我使用打印机对象打印的日本简单字符串类型,比如“レジースター”,代码等
Dim s As String
s="レジースター"
Printer.Print s
Printer.EndDoc
但输出结果是一组的像乱码“OEvƒOEƒ| [ ƒg”
有谁谁可以成功地日语的Windows环境不受与VB6打印机对象打印出日本,请帮助我。
最后找到关键很简单,这有点棘手,但我仍然不知道为什么。只需设置打印机对象的字体,如“Printer.Font.Charset = 128”(128为日语)
ATTN:请注意我的情况,我的操作系统是英语,语言和地区设置为日语。
让我困惑的是Windows的默认ANSI。我们知道,Printer.Font.Charset的默认值是0,这意味着ANSI(如果语言环境是日语,那么它将使用代码页932,如果它是英语,它将使用Windows-1252)。我的操作系统是日语(设置为日语,而不是纯粹的原始英语操作系统),当我尝试用日语写文件时可以显示日语,但是当我使用打印机对象进行打印时,它确实有0( ANSI)的.Font.Charset值,但实际上它仍然使用原始的OS代码页,所以它是有线的。当我尝试将系统设置为中文和韩文时,这两种语言都是正常的,只有日语有这个问题。
感谢您的回复,但我可以用日语存储我的项目。我不知道是否因为我的日文Windows环境。实际上,日语存储在一个资源文件中,我加载资源文件并打印出来。我可以在中文环境中打印中文,但不能在日文环境中打印日文。我知道这可能是代码页问题,但我试图将日文转换为Unicode,但它仍然不起作用... – 2013-04-30 10:47:17
术语“ANSI”在Windows开发中以令人困惑的方式使用。它意味着Windows上的当前代码页。如果Windows设置“非Unicode程序的语言”设置为日语,那么当前代码页将是日语,而日语文本应该可以工作。在发送到打印机,写入文件等之前,这些字符串将转换为日文代码页。 – MarkJ 2013-04-30 15:10:00
感谢您的解释,我已经看到了有关Vb6编码的一些文档。我知道vb6会自动将unicode转换为当前的ANSI。我尝试了“将日文字符串写入文件”和“打印输出”。我可以在txt文件中显示日文(写入时),所以它应该是我当前的日文Windows代码页:932(日文Shift-JIS)(PS:我的操作系统是英文设置日文环境),但是当我尝试使用打印机对象进行打印,它似乎由Windows 1252(我的英文操作系统默认代码页)编码。我已经设置了正确的字体,我对此感到困惑。 – 2013-05-02 05:18:29