社区
C#
帖子详情
Socket传送文件发生乱码
mizuho_2006
2012-09-27 10:19:27
传送中文字符的文本文档都没问题,但是包含日文的txt文件就会变成乱码。txt文件是UTF-8编码的,在接收时也用的UTF-8编码,怎么会出现乱码呢?
还有一个问题,在接收到文件提示另存的时候,不知道文件的文件名和扩展名,这些信息是不是要通过客户端发送数据时一起转换为2进制数据发过来服务端才能识别?
...全文
253
15
打赏
收藏
Socket传送文件发生乱码
传送中文字符的文本文档都没问题,但是包含日文的txt文件就会变成乱码。txt文件是UTF-8编码的,在接收时也用的UTF-8编码,怎么会出现乱码呢? 还有一个问题,在接收到文件提示另存的时候,不知道文件的文件名和扩展名,这些信息是不是要通过客户端发送数据时一起转换为2进制数据发过来服务端才能识别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ggewt2td
2012-10-01
打赏
举报
回复
在网站开发中,用Base64模拟二进制。
ggewt2td
2012-10-01
打赏
举报
回复
[Quote=引用 13 楼 的回复:]
在普通的信令中如果要传送byte[]类型的字段,通常用base64编码来承载byte[](也就是说是使用string而不是byte[]来定义实体类中的字段类型)。
很少情况下,可能需要单独开一个端口(例如80端口)专门用于传送二进制短连接的数据。
[/Quote]
HTTP协议不能直接传二进制,所以才用 Base64 模拟二进制。
Socket可以直接传二进制,就不用Base64了
以专业开发人员为伍
2012-09-29
打赏
举报
回复
在普通的信令中如果要传送byte[]类型的字段,通常用base64编码来承载byte[](也就是说是使用string而不是byte[]来定义实体类中的字段类型)。
很少情况下,可能需要单独开一个端口(例如80端口)专门用于传送二进制短连接的数据。
以专业开发人员为伍
2012-09-29
打赏
举报
回复
关于第二个问题,我以前回答过一个帖子请参见:
http://topic.csdn.net/u/20120705/01/dc56fc56-ba4c-487a-a43e-c44b31bd1ac4.html?seed=27852526&r=79044777
基本概念是,任何专业的通讯程序都是要自己设计信令协议的。不管用什么方式、效率怎样,总之是需要让一个服务端口能够解析十几种甚至上百种命令格式。如果你看到的某个网络程序的demo它只能解析一种信令数据,那么这就是糊弄小孩子的demo程序。
以专业开发人员为伍
2012-09-29
打赏
举报
回复
[Quote=引用楼主 的回复:]
传送中文字符的文本文档都没问题,但是包含日文的txt文件就会变成乱码。txt文件是UTF-8编码的,在接收时也用的UTF-8编码,怎么会出现乱码呢?
还有一个问题,在接收到文件提示另存的时候,不知道文件的文件名和扩展名,这些信息是不是要通过客户端发送数据时一起转换为2进制数据发过来服务端才能识别?
[/Quote]
utf8没有问题。不知道你是怎么传送、怎么接收的,不知道接收时做了什么不应该有的额外动作。
不过对于文件来说,使用什么字符串编码毫无意义!你就按照byte[]方式读取文件,然后按照byte[]方式打包发送消息就行了。整个过程中不要纠结什么字符串编码问题,因为根本就跟字符串没有关系。你就当作是一个图片文件被传送好了!
mizuho_2006
2012-09-29
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
日文不能用UTF-8,这点没错,至于用什么我忘记了,你用UTF-8……
[/Quote]
那该用什么?如果用日文特有的编码,别的语言不是不能正常显示了?
mizuho_2006
2012-09-29
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
不同语言编码方法不同 不能用一个编码 需要转码
[/Quote]
UTF-8不是通用的编码吗?
mizuho_2006
2012-09-29
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
或者是不是你的客户端电脑上没有日文字符集?
[/Quote]
不会的,我电脑上用日语输入法,经常打日语,显示也正常。
myrroom
2012-09-28
打赏
举报
回复
或者是不是你的客户端电脑上没有日文字符集?
wangzhonglong456
2012-09-28
打赏
举报
回复
不同语言编码方法不同 不能用一个编码 需要转码
myrroom
2012-09-28
打赏
举报
回复
只要全部统一编码,应该就不会有这种情况吧
读取,发送,接收,存储
Pigeon汪
2012-09-28
打赏
举报
回复
日文的好像不能用UTF-8编码,像中文的可以用gbk编码,日文的应该也有相关的编码方式
ggewt2td
2012-09-28
打赏
举报
回复
全部转成字节流再传,这样无论怎么传都不会变,然后再解码
SocketUpEx
2012-09-28
打赏
举报
回复
日文,UTF-8 应该没有关系吧
反正用什么格式都会转成Byte[]
风吹腚腚凉
2012-09-28
打赏
举报
回复
[Quote=引用楼主 的回复:]
传送中文字符的文本文档都没问题,但是包含日文的txt文件就会变成乱码。txt文件是UTF-8编码的,在接收时也用的UTF-8编码,怎么会出现乱码呢?
还有一个问题,在接收到文件提示另存的时候,不知道文件的文件名和扩展名,这些信息是不是要通过客户端发送数据时一起转换为2进制数据发过来服务端才能识别?
[/Quote]
日文不能用UTF-8,这点没错,至于用什么我忘记了,你用UTF-8必然出错,我干过几个对日项目。
C语言+
Socket
实现
文件
传输
实现
文件
传输功能~使用与初学者对
socket
的了解和深一步的研究!希望能给大家带来帮助
防止
Socket
传递汉字
乱码
防止
Socket
传递汉字
乱码
,防止
Socket
传递汉字
乱码
c#
socket
文件
传输 源码 即时 中文 字符
c#
socket
文件
传输 源码 即时 中文 字符c#
socket
文件
传输 源码 即时 中文 字符c#
socket
文件
传输 源码 即时 中文 字符
java
socket
文件
夹传输
可以实现
文件
夹的传输,暂时可以传输文本,还在改进中
java c++ 通信之间的
乱码
解决方法
java c++
socket
java c++
socket
java c++
socket
java c++
socket
java c++
socket
java c++
socket
java c++
socket
java c++
socket
java c++
socket
java c++
socket
java c++
socket
C#
110,896
社区成员
642,586
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章