问题标签 [mbcs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
426 浏览

encoding - Windows-1252 代码页是否可以有一个多字节字符?

我知道一些语言环境(例如远东语言环境)具有多字节字符集,其中需要多个字节来表示一个字符。

我想测试我的(ANSI)软件处理多字节字符的能力。

除了我住在北美,我的 Windows 代码页设置为Windows-1252.

是否可以在我的本地 Windows-1252 语言环境中构造多字节字符?

0 投票
3 回答
4497 浏览

c# - 如何在 C# 中将 UNICODE 字符串转换为 MBCS?

我有一个 UNICODE 字符串(中文),我想将其转换回 MBCS,以便将其作为参数添加到 SQL 查询中。(SQL Server 中的列在 varchar 中,所以这种转换对我来说是必要的)。

如何在 C# 中转换为 MBCS?请帮忙。

谢谢, 普拉塞奥

0 投票
5 回答
79624 浏览

c++ - 将字符串中的第一个字母转换为大写

我有一个字符串:"apple"。如何仅将第一个字符转换为大写并以 的形式获取新字符串"Apple"

我也可以有一个带有多字节字符的字符串。

如果字符串的第一个字符是多字节字符怎么办?

0 投票
2 回答
224 浏览

java - ANTLR for Java 是否支持 MBCS?

我搜索并找不到太多关于它的信息。我们需要为编码等提供最通用的支持,并希望确保 ANTLR 能够处理我们扔给它的任何东西。

0 投票
2 回答
4667 浏览

c++ - 如何使 ::WriteFile 在 UNICODE 情况下工作?

由于我的 MFC 程序处于 unicode 环境,因此下面的代码无法正常工作。

结果是“123”,应该是“123456”

我在互联网上发现 Unicode BOM 可以解决这个问题。所以我修改了我的代码,如下所示。

但是,它没有任何区别。

似乎这是一个简单的问题,但我迷失了寻找解决方案。

任何想法都会受到欢迎。提前致谢。

0 投票
3 回答
2706 浏览

python - 使用文件系统编码对 unicode 路径进行编码会破坏它

我在内存中确实有以下路径:

我正在尝试将其用作 cmd 中的参数,因此我必须对其进行编码。

但是,字符串没有以正确的方式编码 - 它转换为\xf5to?而不是õ. 因此找不到该文件。

这怎么可能发生?我正在使用默认的文件系统编码(即 mbcs)。

0 投票
1 回答
789 浏览

c++ - C++ 对 MBCS 使用 std::string 函数,对 UTF-16 使用 std::wstring 函数

有没有人处理过为 MBCS 使用 std::string 函数?例如在 CI 中可以这样做:

但在 C++ 中,我正在这样做:

如果尾随字节是斜线,那么 find_last_of 会在尾随字节处停止吗?对于 std::wstring 也是同样的问题。

如果我需要用另一个字符替换所有一个字符,请用反斜杠说所有正斜杠,这样做的正确方法是什么?我是否必须检查每个字符的前导代理字节然后跳过线索?现在我正在为每个 wchar 执行此操作:

谢谢

编辑:正如大卫正确指出的那样,在使用多字节代码页时需要处理更多。微软表示使用 _mbclen处理字节索引和 MBCS。在使用 ANSI 代码页时,我似乎无法可靠地使用 find_last_of。

0 投票
2 回答
92 浏览

winapi - 将一个符号从 Unicode 转换为 MBCS,它仅以 Unicode 形式出现,而不出现在代码页中

我的应用程序是基于 MBCS 构建的,但我在 unicode 中存在一个货币符号,但在相关代码页中没有。我需要在我的应用程序中显示相同的货币符号,所以有什么方法可以实现它。

我正在尝试通过使用 Windows 转换 API 来做到这一点,即 MultiByteToWideChar、WideCharToMultiByte,它会有帮助吗?

请让我知道上述方法是否正确?或者有人试过吗?或任何其他方式我可以做到这一点?

如果可能的话,我可以获取示例代码片段作为示例。

0 投票
3 回答
11247 浏览

c++ - 读取和写入注册表项。C++ MFC MBCS。

我想检测一个以“HKEY_LOCAL_MACHINE\SOFTWARE\blah\SetupPath”开头的注册表项,并在可能的情况下读取到 CString。

我在 RegOpenKeyEx 函数上看到了 MSDN

所以为此看起来我需要设置一些东西。

并查看密钥是否存在

现在,如果密钥存在,我想将那里的内容读入 CString。我还看到了 RegQueryValueEx

在我调用这个函数之前,看起来我也需要一些设置。

现在我可以调用它了

然后我想我可以检查一下类型然后转换为字符串?

这一切都正确吗?我可能会错过什么或需要做什么?

0 投票
3 回答
2968 浏览

c++ - 为什么 printf 在使用“C”语言环境时可以显示非 ASCII 字符?

注意:我问的是 Microsoft Visual C++ 2008 上的实现定义的行为(可能与 2005+ 相同)。操作系统:Win7简体中文安装。

当我使用 执行非 ASCII I/O 时,我感到很惊讶printf。例如

输出:

调试器中的内存占用显示它"中"以两个字节编码:0xD6, 0xD0,这是代码页 936 中该字符的代码点,用于简体中文。它不应该在最有可能是的代码点范围"C" locale内。0x0 ~ 0x7F

问题:

为什么它仍然可以在“C”语言环境中正确显示字符?所以我猜测语言环境与此无关printf"English"但是,我会问,为什么切换到与 936 不同的 locale时就不能显示了?有趣的?

编辑:

我将标准输出重定向到一个文件并进行了一些测试。它表明无论设置什么语言环境,正确的字符"中"都会保存在文件中。它表明这setlocale()与控制台显示字符的方式有关,这与我对其工作原理的理解相矛盾:printf将字节/代码点放入控制台的输入缓冲区,控制台使用自己的代码页(chcp返回的内容)解释这些字节。