如何将ANSI字节转换为Unicode字符串
How to convert ANSI byte to Unicode string?
我有一个vector<BYTE>
,它表示字符串中的字符。我想将这些字符解释为ASCII字符,并将它们存储在Unicode(UTF-16)字符串中。当前代码假定vector<BYTE>
中的字符是Unicode而不是ASCII。这适用于标准ASCII,但不适用于扩展ASCII字符。这些字符需要使用通过GetACP()
检索的当前代码页进行解释。如何使用这些ASCII字符创建Unicode(UTF-16)字符串?
编辑:我认为解决方案应该与这里讨论的宏有关:http://msdn.microsoft.com/en-us/library/87zae4a3(v=vs.80).aspx我只是不太确定实际的实现会如何。
int ExtractByteArray(CATLString* pszResult, const CByteVector* pabData)
{
// place the data into the output cstring
pszResult->Empty();
for(int iIndex = 0; iIndex < pabData->GetSize(); iIndex++)
*pszResult += (TCHAR)pabData->GetAt(iIndex);
return RC_SUCCESS;
}
您应该使用MultibyteToWideChar将该字符串转换为unicode
既然使用MFC,就让CString
来完成这项工作。
我有一个
vector<BYTE>
,它表示字符串中的字符。我想将这些字符解释为ASCII字符,并将它们存储在Unicode(UTF-16)字符串中
只有在处理二进制数据时才应使用std::vector<BYTE>
。使用字符串时,请改用std::string
。请注意,此std::string
对象将包含特殊字符,这些字符将由一个或多个字节的序列编码(因此称为多字节字符),但这些字符不是ASCII字符。
使用std::string
后,可以使用MultiByteToWideChar
创建自己的函数,该函数将std::string
(包含多字节UTF-8字符)转换为包含UTF-16编码点的std::wstring
:
// multi byte to wide char:
std::wstring s2ws(const std::string& str)
{
int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
std::wstring wstrTo(size_needed, 0);
MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
return wstrTo;
}
相关文章:
- 如何将unicode字符串从C++传递到delphi
- 将 unicode 字符串与 c ++ 符号进行比较?
- C++:Unicode 字符串文字的可移植性
- 如何使用 CTypes 将 wchar_t** - 以空结尾的 UNICODE 字符串数组 - 返回到 Python 脚
- Xamarin Android:在 C++ 中将字符串从 C# 封送到 Unicode 字符串的正确方法是什么?
- 如何在 python 包装中使用 unicode 字符串用于带有 cython 的 c++ 类?
- 如何使用poco :: logger记录Unicode字符串
- 如何将 Unicode 字符串连接成字符串以传递到 mysql 调用中
- Unicode字符串Visual C 构造函数
- 如何将 (ICU4C) Unicode 字符串逐个字符复制到另一个 Unicode 字符串
- 如何从Windows中的进程中读取Unicode字符串
- 如何在Visual C 中的BSTR和32位Unicode字符串之间进行转换
- C 编译器如何从UTF8源文件中生成Unicode字符串文字
- 如何检测终端中的unicode字符串宽度
- 如何在字符级别操作Unicode字符串
- 获取Crypto++中Unicode字符串的SHA1
- 将 unicode 字符串转换为字符串
- c++Unicode字符串与易混淆字符的比较.例如(U 0054)应为==(U03A4)等
- 如何在带L(或不带L)的变量中传递unicode字符串
- C++中的Unicode字符串处理