使用 QTcpSocket 传输文件时出现奇怪的字符
Posted
技术标签:
【中文标题】使用 QTcpSocket 传输文件时出现奇怪的字符【英文标题】:Strange characters when transferring file with QTcpSocket 【发布时间】:2013-03-26 02:52:12 【问题描述】:我正在尝试使用 QTcpSocket 传输文件。连接运行良好,但我的问题是当我尝试在文件中记录接收到的字节时。当我打开文件时,文件开头有一些奇怪的字符。这些字符是什么?
【问题讨论】:
分析更多我意识到该文件总是比原始文件多 4 个字节。独立是txt文件还是二进制文件。 如何读取文件,将其写入套接字,从套接字读取并将其写回文件?如果没有这部分代码,我们将无法帮助您。如果您只是将文件读取为 QByteArray 并将其写入为 QByteArray 将没有编码开销 【参考方案1】:我的问题是我将整个对象保存在我的文件中。当我们在流中使用运算符>>
时,Qt 将整个对象序列化并发送出去。如果您只想写入文件的字节,或者您想要的任何内容,您需要使用writeRawData
或将 char * 传递给字节的写入方法。
:)
【讨论】:
【参考方案2】:他们可能正在描述文件文本的编码。例如 UTF-8 v. ISO### 标准。如果您获取文本块并将其设置为正确的编码,这些字符很可能会消失。
这里是了解它的起点:
http://en.wikipedia.org/wiki/Unicode_and_html
http://qt-project.org/doc/qt-4.8/qstring.html#toUtf8
希望对您有所帮助。
【讨论】:
分析更多我意识到该文件总是比原始文件多 4 个字节。独立是txt文件还是二进制文件 是描述缓冲区大小的整数吗?以上是关于使用 QTcpSocket 传输文件时出现奇怪的字符的主要内容,如果未能解决你的问题,请参考以下文章