网络上面有提到GBK向UTF8转换的实现方式,但是尝试之后不大准确。
如下是自己根据GBK和UTF8的存储格式,实现GBK向UTF8转化。
BYTE aGBK[3] = {0x00, 0x00, 0x00};
int by1, by2, by3, iValue, iSub = 1, iLen = 0, iCount = 0;
wchar_t aUnicode[2];
BYTE *pString = NULL;
iLen = sStr.Length();//sStr为函数输入参数,AnsiString
pString = new BYTE [iLen * 3];
while(iSub <= iLen)
{
if(0x80 > (iValue = (sStr[iSub] & 0xFF)))
{
pString[iCount++] = iValue;
}
else
{
aGBK[0] = (sStr[iSub++] & 0xFF);
aGBK[1] = (sStr[iSub] & 0xFF);
MultiByteToWideChar(CP_ACP, 0, aGBK, 3, aUnicode, 2);
by1 = 0xE0;
by2 = 0x80;
by3 = 0x80;
iValue = aUnicode[0];
by3 |= (iValue & 0x0000003F);
by2 |= ((iValue >> 6) & 0x0000003F);
by1 |= ((iValue >> 12) & 0x0000000F);
pString[iCount++] = by1;
pString[iCount++] = by2;
pString[iCount++] = by3;
}
iSub++;
}
2010_10_18_16_59
分享到:
相关推荐
标题中的“GBK_pinyin_table.rar”表明这是一个关于GBK编码的拼音资源文件,而“GBK_gbk_utf-8_gbk_to_pinyin_pinyi”则暗示了这个资源涉及到GBK编码、UTF-8编码以及汉字到拼音的转换。描述中提到这是“GBK拼音字表...
这个压缩包文件"UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_源码.zip"主要涉及到两个常见的字符编码格式:UTF-8和GBK,以及如何在LabVIEW环境下进行编码转换。LabVIEW是美国国家仪器(NI)开发的一种图形化...
在LabVIEW编程环境中,"UTF-8toGBK.vi"这个程序可能是一个用户自定义的VI(Virtual Instrument),用于将UTF-8编码的字符串转换为GBK编码。LabVIEW作为一个图形化编程语言,提供了丰富的字符串处理函数,其中包括了...
`std::string`通常用来存储和处理以字节序列形式表示的文本,而UTF-8恰好就是这样一种以字节为基础的编码方式。 在UTF-8编码中,每个Unicode字符可能由1到4个连续的字节表示。因此,当你处理`std::string`时,需要...
- `utf8_to_gbk()`函数则相反,它接受UTF-8编码的字符串,返回GBK编码的字符串。 6. **注意事项** - 转换过程中需要处理非法编码和异常情况,例如GBK编码的非标准字节序列或超出GBK范围的Unicode码点。 - 处理...
2. `utf8_to_gbk(char* utf8_str, char* gbk_str)`: 相反,这个函数会把UTF-8编码的字符串转换成GBK编码。UTF-8的每个字符可能由1到4个字节组成,转换过程需要考虑这些字节序列。 3. `ansi_to_utf8(char* ansi_str,...
在LabVIEW中,如果你的数据源使用UTF-8编码,而在系统或者程序中误设为GBK编码,就可能出现乱码。"UTF-8toGBK.vi"这个虚拟仪器(VI)就是用来解决这种问题的。它提供了一个功能,将UTF-8编码的字符串转换为GBK编码,...
在提供的`gbk_utf8_unicode.c`和`gbk_utf8_unicode.h`文件中,可能包含了用于实现UTF-8与GBK之间转换的函数。这些函数可能包括将GBK编码的字符串转换为UTF-8,以及将UTF-8编码的字符串转换为GBK。 例如,一个可能的...
- `int utf8_to_unicode(const char* utf8_buffer, int utf8_len, wchar_t* unicode_buffer, int unicode_len)`:将UTF-8编码转换为宽字符(Unicode)形式。 - `int unicode_to_utf8(const wchar_t* unicode_buffer,...
本文将详细介绍如何在Microsoft Foundation Classes (MFC)环境下实现GBK与UTF-8之间的编码转换。该技术适用于那些需要处理不同字符集数据的应用程序开发场景,特别是在早期Windows系统中广泛使用的MFC框架下进行编码...
在头文件中,可能会定义如`utf8_to_gbk`和`gbk_to_utf8`这样的函数原型,用于进行编码转换。实现文件中,这些函数会包含对字节序列的解析和转换操作。 编写这样的转换程序需要深入理解字符编码原理,并且需要考虑...
throw std::runtime_error("Failed to convert from GBK to UTF-8"); } outStr.resize(outStr.size() - outbytesleft); // 裁剪末尾的空字符 iconv_close(cd); return outStr; } ``` 这两个函数分别在Windows...
这个工程可能包含了一个或多个源文件,例如`utf8_to_gbk.c`,这些文件展示了如何在C语言环境中调用libiconv API进行编码转换。 为了确保转换的正确性,需要注意以下几点: - 检查输入和输出字符串是否正确编码。 - ...
1. 创建`std::wstring_convert`对象,这次指定`std::codecvt_utf8_from_gbk`作为转换规则,因为GBK到UTF-8的转换不是标准转换,可能需要特定的库支持。 2. 使用`from_bytes`方法将UTF-8编码的字节序列转换为宽字符串...
UTF-8则是Unicode的一种实现方式,Unicode是一个包含全球几乎所有文字的字符集。UTF-8编码的最大特点是其字节长度可变,从1字节到4字节不等,能够表示Unicode字符集中所有的字符。UTF-8在互联网上被广泛采用,因为它...
utf8_string = gbk_string.encode('gbk').decode('utf-8') return utf8_string ``` 这段代码首先使用`encode`方法将GBK编码的字符串转为字节流,然后再用`decode`方法将字节流解码为UTF-8编码的字符串。这种方法...
string utf8FromUnicode = Encoding.UTF8.GetString(utf16ToUtf8Bytes); Console.WriteLine($"GBK -> UTF-8: {utf8String}"); Console.WriteLine($"UTF-8 -> GBK: {gbkString}"); Console.WriteLine($"UTF-8 ->...
标题“UTF8.rar_UTF8_linux utf8 _linux utf8 Unicode_single”暗示了这个压缩包包含与UTF-8编码在Linux环境下转换单个字符相关的源代码。UTF-8是一种广泛使用的Unicode字符编码方案,它能表示Unicode标准中的所有...
通过`QTextCodec::codecForName()`函数获取GBK或UTF-8的编码对象,然后使用`fromUnicode()`和`toUnicode()`方法进行转换。 3. **使用外部工具**:压缩包内的`Gbk2utf8`文件可能是一个脚本或程序,用于批量转换整个...
UTF-8和16进制编码是两种常见的表示方式,尤其在程序开发、数据传输和存储时经常遇到。标题中的"UTF8转16进制工具 Utf8ToHex"指的是一个能够将UTF-8编码的字符串转换成16进制表示形式的实用工具。描述中提到的例子,...