• 7750阅读
  • 6回复

我想实现简体中文和繁体之间的转换,求大侠帮看一下这两个函数的问题! [复制链接]

上一主题 下一主题
离线martinlew
 
只看楼主 倒序阅读 楼主  发表于: 2010-09-24
— 本帖被 XChinux 执行加亮操作(2010-10-21) —
QString MainWindow::UnicodeToBIG5(QString szBuf)
{
    QTextCodec *codec = QTextCodec::codecForName("Big5");
    QByteArray big5_szBuf = codec->fromUnicode(szBuf);
    szBuf = QString(big5_szBuf);
    return szBuf;
}
QString MainWindow::BIG5ToUnicode(QString szBuf)
{
    QByteArray big5_szBuf;
    big5_szBuf = szBuf.toAscii();
    QTextCodec *codec = QTextCodec::codecForName("System");
    szBuf = codec->toUnicode(big5_szBuf);
    QMessageBox::information(NULL,"2", szBuf);
    return szBuf;
}
离线dbzhang800

只看该作者 1楼 发表于: 2010-09-24
1. 你这种思路是无法实现中文的繁简转换的。
2. 即使是 big5与unicode之间的转换,你这两个也都有问题。既然是转换,输入输出都是QString就有问题了,big5你应该用QByteArray、char* 或 std::string

3. szBuf = QString(big5_szBuf);  big5_szBuf = szBuf.toAscii();包含潜在的其他问题
离线martinlew
只看该作者 2楼 发表于: 2010-09-24
回 1楼(dbzhang800) 的帖子
谢谢你,我再想想应该怎么解决,另外,如果可以的话,麻烦你写一个函数让我学习一下!
离线martinlew
只看该作者 3楼 发表于: 2010-09-27
QByteArray MainWindow::UnicodeToBIG5(QString szBuf)
{
    QTextCodec *big5 = QTextCodec::codecForName("Big5");
    QByteArray big5_szBuf = big5->fromUnicode(szBuf);
    return big5_szBuf;
}


我已经将代码改着这样子了,然后翻译后,比如说“汉字” 会变成“?字”,请问怎么能把繁体字显出来呢
离线martinlew
只看该作者 4楼 发表于: 2010-09-27
求各位大侠帮帮我吧!
离线paranoid
只看该作者 5楼 发表于: 2010-09-27
1楼说的很清楚,这种思路就是错的,实现不了你想的结果
同一个字比如"国"的简体和繁体"國"unicode码是完全不同的
大概你得自己弄个表,每个简体字对应一个繁体字这样去转换
离线martinlew
只看该作者 6楼 发表于: 2010-09-27
回 5楼(paranoid) 的帖子
好的,谢谢你了,你这种思路我有想过,但是觉得工作量大,不想用那种方式去实现,我就是在想有没有别的办法去实现这个转换。
快速回复
限100 字节
 
上一个 下一个