QT开发安卓中的中文字符编码问题解决 在使用 QT 开发安卓应用程序时,经常会遇到中文字符编码问题,特别是在使用 Socket 通讯时。这是由于 QT 和 Java 采用不同的字符编码方式,导致在数据传输过程中出现乱码问题。 在 QT 中,我们可以使用 UTF-8 编码来发送数据。在 Socket server 端,我们可以使用以下代码来接受和解析数据: ```c++ qint64 len = sock->bytesAvailable(); QByteArray alldata = sock->read(len); QTextCodec *utf8codec = QTextCodec::codecForName("UTF-8"); QString utf8str = utf8codec->toUnicode(alldata.mid(2)); qDebug()<<"hex:["<<alldata.toHex().toUpper()<<"]"; qDebug()<<"utf-8 ["<< (utf8str) << "]"; ``` 在上面的代码中,我们首先读取 Socket 中的所有数据,然后使用 UTF-8 编码来解析数据。在解析过程中,我们需要从第三个字节开始,因为前两个字节是无效的。 在 Android Java 客户端中,我们可以使用以下代码来发送数据: ```java clientSocket = new Socket("192.168.1.106", 1234); dout = new DataOutputStream(clientSocket.getOutputStream()); String sendText = editText.getText().toString(); //从文本输入框获取内容 dout.writeUTF(sendText); ``` 在上面的代码中,我们使用 `writeUTF` 方法来发送数据,这个方法会将数据编码为 UTF-8。 但是,在 QT 服务器端接受数据时,我们不能直接对接受的所有数据执行 UTF-8 编码,因为前两个字节是无效的。我们需要从第三个字节开始执行 UTF-8 编码,否则数据将不正确。 解决这个问题的关键是使用正确的编码方式和解析方式。在 QT 中,我们可以使用 UTF-8 编码来发送和接受数据,而在 Android Java 客户端中,我们可以使用 `writeUTF` 方法来发送数据。同时,我们需要在 QT 服务器端正确地解析数据,从第三个字节开始执行 UTF-8 编码。 在 QT 开发安卓应用程序时,我们需要注意中文字符编码问题,并采取正确的编码和解析方式来解决这个问题。
- _旅行家_2017-04-27骗子。。。—_—
- 粉丝: 1
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助