• 7436阅读
  • 3回复

如何实现从utf8->ansi的转换 [复制链接]

上一主题 下一主题
离线water_wf
 

只看楼主 倒序阅读 楼主  发表于: 2008-07-17
— 本帖被 XChinux 执行加亮操作(2008-07-17) —
请问: 从文件中读出来的数据应该是什么编码的?当然Qtextstream 可以设定。
如果从QString utf8编码转到文件读入的那个编码QTextStream in.readAll() ,
怎么作?
最好详细点,搞的一天也没弄好?
离线water_wf

只看该作者 1楼 发表于: 2008-07-17
举个例子:
    char *string = "中文和English混和字符串!";
    printf("string = %s\n",string);
    QTextCodec* gbk_codec = QTextCodec::codecForName("GB18030");
    QString gbk_string = gbk_codec->toUnicode(string);
    printf("gbk = %s\n",gbk_string.toUtf8().data());//转成gb28030的编码,打印乱码,我想在转回去怎么办?
    gbk_codec = QTextCodec::codecForName("UTF-8");
    QByteArray byte1 = gbk_codec->fromUnicode(gbk_string);
    printf("gbk = %s\n",byte1.data());//和上面一样,没有转换?为什么上面换成gbk_string.unicode() gbk_string.toUtf8() 都一样
离线XChinux

只看该作者 2楼 发表于: 2008-07-17
不要用你源代码中直接写的中文来评比读入的字符串转换是否正确。
根据你的文件内码设置QTextStream的codec(如果是UTF-8,就不用了),比如:
  1. textEdit1->clear();
  2. {
  3.     QFile file("/your_file.txt");
  4.     if (file.open(QIODevice::Text | QIODevice::ReadOnly))
  5.     {
  6.         QTextStream in(&file);
  7.         in.setCodec("GBK");
  8.         textEdit1->append(in.readAll());
  9.       file.close();
  10.     }
  11. }
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线water_wf

只看该作者 3楼 发表于: 2008-07-18
thank you,
linux 下的编辑器都是这样的,比如kate,kwrite,kedit,问题在于,如果用户打开文件之后,另有输入,这个时候只能提示用户是否保存然后在进行转换,但是windows下的 很多编辑器都可以直接从内存读出来进行转换(例如根本不是从文件打开的),怎么做的呢?
快速回复
限100 字节
 
上一个 下一个