【问题标题】:What is the default VB6 charset?什么是默认的 VB6 字符集?
【发布时间】:2011-01-04 04:34:55
【问题描述】:

我们有一个用 Java 编写的应用程序,它读取一些由 VB6 应用程序生成的文本。 问题是:这个 VB6 应用程序使用一些特殊字符生成这个输出,比如我们不知道在什么字符集中的 ç,ã,á。

所以问题是:VB6 是否使用了默认字符集?是哪个?

【问题讨论】:

    标签: unicode vb6 character-encoding non-unicode


    【解决方案1】:

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

    【讨论】:

    • 这正是我们正在做的事情。通过文件。实际上,我们发现是这样的:因为它是一个命令行应用程序,它是在 MS-DOS 环境中执行的,所以它使用的是默认字符集(windows-1252),而不是 UTF-8 或 UTF-16。
    • 从未见过 vb6 ms dos 应用程序!...但是“默认编码”可能因计算机而异....
    【解决方案2】:

    嗯,

    这是我们发现的:我们不知道这是不是因为我们的 VB6 应用程序是在命令行上执行的,但它实际上使用的是 MS-DOS 环境默认字符集,在我们的例子中是 windows-1252 .

    所以,我们所要做的就是将我们的 Java 代码更改为这样的:

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

    而且效果很好!

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

    【讨论】:

    • MS-DOS 在哪里适合这张图片? VB6 程序不能在 MS-DOS 下运行。如果你的意思是这是一个完全不同的命令行程序。如果程序正在写入您正在阅读的文件,请注意 VB6 本机 I/O 语句使用当前 ANSI 代码页和 Unicode (UTF-16LE) 之间的转换来读取/写入文本文件。这些文件将具有 8 位 ANSI 字符,并且用于翻译的代码页基于当前的区域设置。 MS Access 是另一个问题,但如果 MDB 晚于 Jet 3.x 格式(引擎类型=4),则大多数文本在内部应该是 UTF-16LE。
    • +1 给鲍勃。 Michael Kaplan 的关于 VB6 国际化的优秀书籍非常详细地解释了这一切。免费示例章节解释了 VB6 I/O 使用默认代码页 i18nwithvb.com/chapters/Chapter06_en.htm Minor niggle - 它可以是 16 位,例如中文
    猜你喜欢
    • 2019-02-07
    • 2011-05-04
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多