读取Unicode编码的中文乱码

hjl0508 2014-11-17 03:43:39
我用id3lib的库函数读取MP3中的id3信息,读取英文没问题,读取ASCII编码的中文也没问题,可是读取Unicode编码的中文出来是乱码。
加了setlocale(LC_ALL,"chs");这个也没用
...全文
823 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjl0508 2014-11-18
  • 打赏
  • 举报
回复
用库函数读出来的Unicode编码的文本高位和地位反了,无法输出,该怎么正过来
这是内存截图
源文件的内存


读出来的
我看你有戏 2014-11-18
  • 打赏
  • 举报
回复
接口让你传的时候什么编码你就传啥编码就好了 宽字节转多字节,网上有现成的函数调用下
赵4老师 2014-11-18
  • 打赏
  • 举报
回复
#include <stdio.h>
void xchg(wchar_t *p,int len) {
    __asm {
        push esi
        push ecx
        mov ecx,len
        mov esi,p
    next:
        mov ax,word ptr [esi]
        xchg ah,al
        mov word ptr [esi],ax
        inc esi
        inc esi
        loop next
        pop ecx
        pop esi
    }
}
int main() {
    wchar_t w[4]={0x7b77,0x5b50,0x5144,0x5f1f};
    int i;

    xchg(w,4);
    for (i=0;i<4;i++) printf("0x%04hx,",w[i]);
    return 0;
}
//0x777b,0x505b,0x4451,0x1f5f,
sniffer12345 2014-11-17
  • 打赏
  • 举报
回复
引用 5 楼 lovesmiles 的回复:
[quote=引用 4 楼 hjl0508 的回复:] [quote=引用 2 楼 lovesmiles 的回复:] 呵呵,真接将文件编码改成ascii
我是要读取*.mp3的文件 这个怎么转成ASCII编码?[/quote] ........你确定mp3文件可以读出中文么?它里面的中文和Unicode编码有什么关系?[/quote] 有的 文件协议有头部和各种信息的 另外楼主,没有ascii的中文的。对于国内这些乱七八糟的软件压出来的mp3,大多是gbk。 不过无论是gbk还是utf8或者unicode,你都得用宽字节处理,否则的话会读取错误的。
赵4老师 2014-11-17
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
勤奋的小游侠 2014-11-17
  • 打赏
  • 举报
回复
引用 4 楼 hjl0508 的回复:
[quote=引用 2 楼 lovesmiles 的回复:] 呵呵,真接将文件编码改成ascii
我是要读取*.mp3的文件 这个怎么转成ASCII编码?[/quote] ........你确定mp3文件可以读出中文么?它里面的中文和Unicode编码有什么关系?
hjl0508 2014-11-17
  • 打赏
  • 举报
回复
引用 2 楼 lovesmiles 的回复:
呵呵,真接将文件编码改成ascii
我是要读取*.mp3的文件 这个怎么转成ASCII编码?
hjl0508 2014-11-17
  • 打赏
  • 举报
回复
引用 1 楼 luciferisnotsatan 的回复:
setlocale(LC_ALL,"chs"); 这个估计是当GB来读了吧。试试UTF-8, UTF-16。
还是不行。。。
勤奋的小游侠 2014-11-17
  • 打赏
  • 举报
回复
呵呵,真接将文件编码改成ascii
luciferisnotsatan 2014-11-17
  • 打赏
  • 举报
回复
setlocale(LC_ALL,"chs"); 这个估计是当GB来读了吧。试试UTF-8, UTF-16。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧