LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 881|回复: 5

如何把一个wchar_t字串写到压缩文件中?

[复制链接]
发表于 2006-1-13 17:08:04 | 显示全部楼层 |阅读模式
如下例子

  1. gzFile *file;
  2. setlocale(LC_ALL,"zh_CN.UTF-8");
  3. wchar_t pwc[20]=L"abcd";

  4. file=gzopen("foo.gz","w9f");
  5. gzwrite(file,pwc,6);
  6. gzclose(file);
复制代码

在文件foo.gz中得到的是"abcd"的unicode码而不是我想要的utf-8码。谁有方法解决这个问题?

补充:
我的系统使用了zh_CN.UTF-8. 用zlib的api来操作压缩文件。
发表于 2006-1-13 23:10:26 | 显示全部楼层
L是不是指定了unicode
回复 支持 反对

使用道具 举报

发表于 2006-1-14 11:05:39 | 显示全部楼层
L是一个将ASIC码转换为ucs2编码的宏。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-14 14:32:46 | 显示全部楼层
我明白L的含义。在这个例子里只是一个举例。只要把L去掉然后把wchar_t改为char可以实现。
但是在实际应用中pwc里面的值可能是一个变量,并不是简单的把L去掉就解决的。
不过我现在找到了个方法:用wcsrtombs来转换ucs2编码到一个内存区中。然后用gzwrite来解决。gzprintf在宽字符集的程序中是被废了。根本用不上。
回复 支持 反对

使用道具 举报

发表于 2006-1-14 15:49:33 | 显示全部楼层
为什么说是UCS2? 不是UCS4?

我的sizeof(wchar_t)返回的是4呀。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-14 18:59:41 | 显示全部楼层
据我所知ucs2和ucs4只差前面多2个字节的0
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表