我有一个客户端-服务器应用程序,其中客户端将使用 Qt(Ubuntu),服务器将使用 C#。 Qt 客户端将以 UTF-16 编码格式发送字符串。
我已经使用 QTextCodec 类转换为 UTF-16。但每当转换发生时,它都会被填充一些更多的字符。例如
“”
将更改为
"\ff\fe\0\0\0"
我有以下将 QString 转换为 QByteArray 的代码
//'socketMessage' is the QString, listener is the QTcpSocket
QTextCodec *codec = QTextCodec::codecForName("UTF-16");
QByteArray data = codec->fromUnicode(socketMessage);
listener->write(data);
我什至尝试过 QTextStream、QDataStream 等进行编码。但每次我都会得到相同的结果。我在这里做错了什么吗?
虽然这个问题很久以前就被问过,但我也遇到了同样的问题。解决方案是使用选项 QTextCodec::IgnoreHeader 创建一个 QTextEncoder。
QTextCodec *codec = QTextCodec::codecForName("UTF-16");
QTextEncoder *encoderWithoutBom = codec->makeEncoder( QTextCodec::IgnoreHeader );
QString str("Foobar")
QByteArray bytes = encoderWithoutBom ->fromUnicode( s );
这将产生一个没有 BOM 的 QByteArray。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)