如何在没有错误的情况下展示特殊的中文,韩语,日本角色

How to show special Chinese, Korean, Japanese characters without errors

本文关键字:中文 韩语 角色 日本 有错误 情况下      更新时间:2023-10-16

我对中文,韩语,日语角色有问题。我正在使用ID3TAG lib c 来获取某些MP3文件的元数据。但是,某些文件名是韩语字符,它显示错误的标题名称。例如:

id3_utf16_t *tmp = id3_ucs4_utf16duplicate(id3_field_getstrings(f,0));
if (NULL != tmp)
{
     str.append(QString::fromUtf16(tmp));
     LOG << str;
}

Str的输出为:"³ª·Î ¸»ÇÒ °Í °°À¸¸é"但是实际上,标题名称为:"나로 말할 것 같으면"

那么如何正确显示特殊字符?

谢谢

使用此网站,我将输出粘贴并转换为十六进制。然后将其转换为UTF-16LE。在那之后,它们是韩国角色,但不完全是您发布的角色。我认为韩国人有一种结合角色的方式。

编辑以删除错误的答案

如果解释为euc-kr字符串,输出是正确的。

# echo "³ª·Î ¸»ÇÒ °Í °°À¸¸é" | iconv -f utf8 -t latin1 | iconv -f EUC-KR -t utf8
나로 말할 것 같으면

实时演示

所以我对正在发生的事情的猜测如下:

  1. 日志文件被编码为EUC-KR(2字节编码)。
  2. 您正在使用一种认为是拉丁语1(1字节编码)的工具(编辑,终端等)来查看它。
  3. 为什么日志文件编码为EUC-KR?因为tmp实际上不是UTF-16中的,所以它在EUC-KR中。

    # printf 'xb3xaaxb7xce' | iconv -f EUC-KR -t utf-8
    나로
    

    QString不能使用 fromUtf16正确转换这些字节。

  4. 为什么tmp在EUC-KR中?我不知道。也许文本字段中的编码未设置或错误设置,因此您的库不知道如何解释。