如何使用 C++将 ISO-2022-KR 编码转换为 UTF-8 编码?
How to convert ISO-2022-KR encoding to UTF-8 encoding using C++?
我有这些字符 (Bw@e( 以字符集="iso-2022-kr" 编码。这些字符的十六进制值为 28 0E 42 77 40 65 0F 29。
Unix iconv 中有一个可用的 API,可以将编码从 iso-2022-kr 转换为 utf-8。
示例:iconv -f iso-2022-kr -t utf8 输入>输出。
转换为 UTF-8 后,十六进制值为:28 EC B0 A8 EC 9E A5 29 (ì° ̈장(
如果使用以下链接对上述十六进制值 (UTF-8( 进行解码:https://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder
结果:作为原始字符:
(차장(
我正在寻找C++源代码,它可以将编码从 iso-2022-kr 转换为 UTF-8 编码。我已经处理了解码部分,它是用 UTF-8 编码的。 任何帮助将不胜感激。
这是一个快速而脏C++程序,演示如何使用 iconv 库接口(可能需要与-liconv
链接(:
#include <cstdio>
#include <cstdlib>
#include <iconv.h>
int main() {
iconv_t conv = iconv_open("utf-8", "iso-2022-kr");
if (conv == reinterpret_cast<iconv_t>(-1)) {
std::perror("iconv_open");
return EXIT_FAILURE;
}
char iso2022kr_buf[] = "x28x0Ex42x77x40x65x0Fx29";
char utf8_buf[128];
std::size_t kr_bytes = sizeof iso2022kr_buf - 1;
std::size_t utf8_bytes = sizeof utf8_buf;
char *as_iso2022kr = iso2022kr_buf;
char *as_utf8 = utf8_buf;
std::size_t len = iconv(conv, &as_iso2022kr, &kr_bytes, &as_utf8, &utf8_bytes);
if (len == static_cast<std::size_t>(-1)) {
std::perror("iconv");
return EXIT_FAILURE;
}
*as_utf8 = ' ';
for (const char *c = utf8_buf; c != as_utf8; c++) {
std::printf("%02hhX ", *c);
}
std::putchar('n');
std::puts(utf8_buf);
iconv_close(conv);
return 0;
}
在行动中:
$ g++ -O -Wall -Wextra iconv_demo.cpp
$ ./a.out
28 EC B0 A8 EC 9E A5 29
(차장)
相关文章:
- 如何使用 C++将 ISO-2022-KR 编码转换为 UTF-8 编码?
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- CP1251:从字符* 转换为 wchar_t* 时的编码失真
- 使用OpenSSL将P1363编码的签名转换为ECDSA_SIG
- 如何在C++中将二进制编码十进制转换为 int
- 将二进制编码的无符号字符转换为整数
- 如何将 MATLAB 图像处理库内置函数转换为 MATLAB 编码器代码生成不支持的 C++?
- 硬编码字符串与强制转换为 PUCHAR 并打印到控制台时从控制台读取的字符串的结果不同
- 将原始视频图像转换为VPX编码器的I420
- Matlab 编码器转换可变大小单元格错误
- 使用 Arduino 将位置编码器值转换为 RPM 时出现问题
- 游戏引擎:如何从结构:编码实践转换变量
- 如何将UTF-8字符串转换为流的编码
- C 14:UTF-8/UTF-16与本机字符编码之间的转换
- 将编码的STD :: String从base16转换为基本10
- 如何将文本从CP437编码转换为UTF8编码
- 将DER编码的X509证书缓冲区转换为Windows cert_context结构
- 将 char* 转换为字符串后,编码会更改
- 将C++ md5 编码转换为 android/java
- 以UTF-8形式存储的JSON需要两次编码转换