我对显示中文,韩文,日文字符有疑问。 我正在使用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的输出为:"³ª·Î ¸»ÇÒ °Í °°À¸¸é"
但实际上标题名称是:"나로 말할 것 같으면"
那么如何正确显示特殊字符?
谢谢
答案 0 :(得分:0)
使用此website,我将粘贴的输出转换为十六进制。然后将其转换为UTF-16LE。在此之后,它们是朝鲜语字符,但不完全是您发布的字符。我认为韩语可以将可能不是这样的字符组合在一起。
编辑以删除错误答案
答案 1 :(得分:0)
如果解释为EUC-KR字符串,则输出正确。
# echo "³ª·Î ¸»ÇÒ °Í °°À¸¸é" | iconv -f utf8 -t latin1 | iconv -f EUC-KR -t utf8
나로 말할 것 같으면
所以我对发生的事情的有根据的猜测如下:
为什么将日志文件编码为EUC-KR?由于tmp
实际上不在UTF-16中,因此它在EUC-KR中。
# printf '\xb3\xaa\xb7\xce' | iconv -f EUC-KR -t utf-8
나로
QString
无法使用fromUtf16
正确转换这些字节。
tmp
?我不知道。也许文本字段中的编码没有设置,或者设置不正确,所以您的库不知道如何解释它。