默认的VB6字符集是什么?

6
我们有一个用Java编写的应用程序,它读取由VB6应用程序生成的一些文本。 问题是:这个VB6应用程序使用一些特殊字符(如ç、ã、á)生成输出,我们不知道它们使用了哪种字符集。 因此问题是:VB6是否使用默认字符集?如果是,那它是什么?
2个回答

2

如何将数据从一个地方传输到另一个地方?通过文件吗?如果是,那么它将使用机器默认编码。我不知道获取它的Java代码,但在C#中,它是Encoding.Default...


这正是我们正在做的事情。通过文件。实际上,我们发现了这个问题:由于它是一个命令行应用程序,在MS-DOS环境下执行时,它使用的是默认字符集(windows-1252),而不是UTF-8或UTF-16。 - Kico Lobo
从来没有见过VB6 MS-DOS应用程序!但是“默认编码”可能因计算机而异... - Peter

1

好的,

这是我们发现的:我们不知道是否因为我们的VB6应用程序在命令行上执行,但它实际上使用了MS-DOS环境的默认字符集,对于我们来说是windows-1252。

所以,我们只需要将我们的Java代码更改为类似下面这样的形式:

InputStreamReader inputReader = new InputStreamReader(input, "windows-1252");

一切都运行良好!

也许不仅是因为 MS-DOS 环境,而是因为我们从 Microsoft Access 数据库中获取了这些数据。个人认为这可能是我们问题最有可能的解决方案。


1
MS-DOS在这个情况下的作用是什么?VB6程序无法在MS-DOS下运行。如果您指的是一个命令行程序,那就完全不同了。如果该程序正在编写一个文件,而您正在读取该文件,请注意,VB6本地I/O语句使用当前ANSI代码页和Unicode(UTF-16LE)之间的转换来读/写文本文件。文件将具有8位ANSI字符,并且用于转换的代码页基于当前区域设置。 MS Access是另一个问题,但如果MDB格式晚于Jet 3.x格式(引擎类型=4),则大多数文本应在内部为UTF-16LE。 - Bob77
给Bob加1分。Michael Kaplan的VB6国际化优秀书籍详细解释了所有这些问题。免费的样章解释了VB6 I/O使用默认代码页http://www.i18nwithvb.com/chapters/Chapter06_en.htm的情况。小问题-它可以是16位的,例如用于中文。 - MarkJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接