【发布时间】:2010-09-09 16:17:43
【问题描述】:
如何使用 microsoft visual studio 2005 将扩展 ascii 编码的 std::string 转换为 utf8?
我正在使用 google 协议缓冲区,如果我在没有转换的情况下给出它,它会抱怨我的字符串中包含非 utf8 字符,这是真的......
【问题讨论】:
-
“扩展 ASCII”是什么意思?
-
没有“扩展ASCII”之类的东西。您首先需要找出编码(如 ISO 8859-1 aka Latin-1 或一些 Windows 代码页)。
-
en.wikipedia.org/wiki/Extended_ASCII 我想我说的是 ISO-8859-1
-
字符串从何而来?您应该定义进行字符转换的边界。在内部,所有字符串都应该是某种格式(似乎您需要 UTF-8),因此您的代码的任何输入也应该是 UTF-8(或由输入法自动转换)。所以问题是未经处理的字符串是从哪里来的?
标签: c++ utf-8 protocol-buffers extended-ascii