传送中文字符的文本文档都没问题,但是包含日文的txt文件就会变成乱码。txt文件是UTF-8编码的,在接收时也用的UTF-8编码,怎么会出现乱码呢?还有一个问题,在接收到文件提示另存的时候,不知道文件的文件名和扩展名,这些信息是不是要通过客户端发送数据时一起转换为2进制数据发过来服务端才能识别?

解决方案 »

  1.   

    日文的好像不能用UTF-8编码,像中文的可以用gbk编码,日文的应该也有相关的编码方式
      

  2.   

    日文不能用UTF-8,这点没错,至于用什么我忘记了,你用UTF-8必然出错,我干过几个对日项目。
      

  3.   

    日文,UTF-8 应该没有关系吧
    反正用什么格式都会转成Byte[]
      

  4.   


    UTF-8不是通用的编码吗?
      

  5.   


    utf8没有问题。不知道你是怎么传送、怎么接收的,不知道接收时做了什么不应该有的额外动作。不过对于文件来说,使用什么字符串编码毫无意义!你就按照byte[]方式读取文件,然后按照byte[]方式打包发送消息就行了。整个过程中不要纠结什么字符串编码问题,因为根本就跟字符串没有关系。你就当作是一个图片文件被传送好了!
      

  6.   

    关于第二个问题,我以前回答过一个帖子请参见:http://topic.csdn.net/u/20120705/01/dc56fc56-ba4c-487a-a43e-c44b31bd1ac4.html?seed=27852526&r=79044777基本概念是,任何专业的通讯程序都是要自己设计信令协议的。不管用什么方式、效率怎样,总之是需要让一个服务端口能够解析十几种甚至上百种命令格式。如果你看到的某个网络程序的demo它只能解析一种信令数据,那么这就是糊弄小孩子的demo程序。
      

  7.   

    在普通的信令中如果要传送byte[]类型的字段,通常用base64编码来承载byte[](也就是说是使用string而不是byte[]来定义实体类中的字段类型)。很少情况下,可能需要单独开一个端口(例如80端口)专门用于传送二进制短连接的数据。
      

  8.   


    HTTP协议不能直接传二进制,所以才用 Base64 模拟二进制。
    Socket可以直接传二进制,就不用Base64了
      

  9.   

    在网站开发中,用Base64模拟二进制。