C++:如何将 ASCII 或 ANSI 转换为 UTF8 并存储在 std::string 中

标签 c++ visual-studio-2010 cstring stdstring

我的公司使用这样的代码:

    std::string(CT2CA(some_CString)).c_str()

我相信它将 Unicode 字符串(其类型为 CString)转换为 ANSI 编码,并且该字符串用于电子邮件的主题。但是,电子邮件的 header (包括主题)表明邮件客户端应将其解码为 un​​icode(原始代码就是这样做的)。因此,某些德语字符(如“ä ö ü”)将无法正确显示为标题。

我是否可以将此 header 放回 UTF8 并存储到 std::string 或 const char* 中?

我知道有很多更聪明的方法可以做到这一点,但我需要保持代码坚持其原始代码(即将 header 作为 std::string 或 const char* 发送)。

提前致谢。

最佳答案

注意:是'|'而不是“&”!

*buffer++ = 0xC0 | (c >> 6);
*buffer++ = 0x80 | (c & 0x3F);

关于C++:如何将 ASCII 或 ANSI 转换为 UTF8 并存储在 std::string 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275824/

相关文章:

c# - 难以理解 foreach (x =>) 语法

c++ - 如何使用 cin 测试空行

c++ - 如何使用某些参数展开某个循环,例如 GCC 中的 max-unroll-times

c++ - Win CE 7平台上的错误c2039和错误c2873

c - 在 Visual Studio 2008 或 2010 中将 Lua 嵌入到 C 应用程序中

c++ - 为什么我在使用 Format() 格式化的 CString 中得到无效数据?

c - 如何将 STDIN 字符串设置为特定字符?

c++ - wrong-looking编译错误调用模板类的模板成员函数

c++ - 为什么 .out 文件是十六进制而不是二进制

c++ - 数组的 Stackoverflow 数组