0 0

linux和windows分别对socket中文数据解析,windows正常,linux乱码20

如题,具体描述如下:
1.socket客户端是flash,数据时byte形式传的
2.把java服务端布署在windows下可以正常解析flash客服端传来的中文
3.但把java服务端放在linux则出现乱码(但是在linux服务端读取数据库中的中文传递给客服端时,客户端不会出现乱码)
4.客户端和服务端都统一用utf-8对中文进行解析

问题:在linux下,为什么服务端解析客户端传进来的中文,会出现乱码?

问题补充:
changchang 写道
在客户端发送同样的内容,在windows和linux系统的服务器上分别打印读到的byte数组,看看是不是一样的。


废话,肯定一样

问题补充:
beneo 写道
windows默认系统语言gbk
linux默认系统语言utf-8

这个跟java socket没有关系,你自己弄混了。

要找出原因的话,还是叫changchang的说的对

首先去比较byte数组,看看是不是一样的



关于java,socket我只是说明一下我开发环境而言,数据是完全一样的

问题补充:linux服务端装好了中文字体,linux下在记事本里面可以显示中文,记事本的编码utf-8的
/etc/sysconfig/i18n配置:
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
OS 
2011年3月12日 18:10

14个答案 按时间排序 按投票排序

0 0

LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

试着把Linux的LANG改成GBK看看能解决吗?

2011年3月26日 21:27
0 0

1:检查环境,对比一下windows和linux系统环境编码;
2:检查文件编码;
3:检查提供flex服务的服务器编码;
4:查看从服务器端传过来能解析中文的那个方法,是不是在传递之前做了转换。

2011年3月21日 22:37
0 0

楼主的服务器代码传上来看一下,只传解析的那段代码就可以了!

2011年3月18日 14:14
0 0

changchang 写道
在客户端发送同样的内容,在windows和linux系统的服务器上分别打印读到的byte数组,看看是不是一样的。


废话,肯定一样
------------------------
这个不一定哦,Linux字节顺序是Big endian, Windows字节顺序是Little endian

2011年3月17日 13:46
0 0

个人觉得是系统的字符集造成的:
1. windows默认系统字符集gbk(不可修改),linux默认不是utf-8需要自行修改;
2. 你的web容器(tomcat)也有一个字符集的配置,也是需要关注到的;
3. 你的客户端使用的是什么字符集,客户端的系统使用什么字符集,服务端系统的字符集,服务端Server的字符集应该与之对应,如果不对应则自己转码过滤一下(一般的系统都会有一个filter转换编码)。
希望对你有所帮助

2011年3月16日 14:09
0 0

你本地连接服务器的远程终端(如:ssh,putty等)的字符集也得设置。
简单点,如果乱码是在日志里出现的,直接把日志文件下到你本地看看是不是乱码就知道了。

2011年3月14日 16:24
0 0

建议调整一下LINUX的字符集试试。

2011年3月14日 14:17
0 0

因为系统自身的字符集问题,确认linux上是否安装了中文字符集,如果没有的话,安装上再试试。

2011年3月13日 07:51
0 0

windows默认系统语言gbk
linux默认系统语言utf-8

这个跟java socket没有关系,你自己弄混了。

要找出原因的话,还是叫changchang的说的对

首先去比较byte数组,看看是不是一样的

2011年3月12日 22:53
0 0

但是从Flash MX开始,Flash就开始支持Unicode编码。

Unicode

Unicode能够支持多国不同文字在同一套编码架构中,所以能够在同一篇文章中,同时显
示繁简体中文字和其他文字。Flash 6(Flash MX)开始支持Unicode,并将Flash Player
6或以上预设编码为Unicode(如果播放Flash 5就仍然是根据浏览者系统预设编码去显示)
,新手不知道这转变,动态载入外部档案,例如:

loadVariablesNum("text.txt", 0);
text.txt这档案里的中文用Big5编码,Flash Player 6则用Unicode,结果当然是显示乱码。

解决方法有两个:
一 强迫Flash使用“Flash 5原来编码方法”,在Frame 1加入指令:
System.useCodepage = true;
如果整都是使用“Flash 5原来编码方法”,就只需在Frame 1开始加一次便可。

二 使用unicode编码

服务端编程:
1.PHP/ColdFusion的开发者
请把你的PHP/ColdFusion存为UTF-8编码。
文本:文件->另存为->编码->UTF-8
DW2K4:File->New->Preference...->Default encoding->UTF-8

2.ASP的开发者
请把你的ASP存为UTF-8编码。
文本:文件->另存为->编码->UTF-8
DW2K4:File->New->Preference...->Default encoding->UTF-8
然后在顶上多加
<%@ codepage=65001 %>
就可以了



2011年3月12日 20:39
0 0

现在只需要在FLASH中新建一层.在时间轴的第一帧添加如下代码就可以了:
     System.useCodePage=true;

2011年3月12日 20:38
0 0

不知你数据库里的数据是不是在linux的服务器写进去的呢?如果是的话,那能正常的从数据库里读取并正确的传输到客户端,说明上传数据,写入数据库,读数据库和下行数据都能正常解码。我觉得很有可能是终端的编码导致你看到了乱码。

2011年3月12日 19:40
0 0

如果是一样的话,解出来的字符串应该是一样的。是在什么地方出现乱码的呢?程序执行过程中因乱码引起异常,还是保存数据库里变成乱码,还是通过ssh等终端查看日志发现乱码的?如果是终端的话,有可能是终端使用的编码不一致而导致的。

2011年3月12日 19:35
0 0

在客户端发送同样的内容,在windows和linux系统的服务器上分别打印读到的byte数组,看看是不是一样的。

2011年3月12日 19:02

相关推荐

    linux下c语言实现xml传输方式的即时通讯

    通过socket API,我们可以创建服务器端和客户端,建立TCP或UDP连接,进行数据的发送和接收。TCP提供面向连接的服务,确保数据的可靠传输;而UDP则是一种无连接的协议,适用于对实时性要求较高的场景,但不保证数据的...

    socket文件接收

    为了防止字符编码问题,通常会使用Base64或其他编码方式对文件名进行编码,确保在网络传输过程中不出现乱码。 3. **文件内容**: 文件内容是文件的主要部分,也是数据量最大的部分。在Socket编程中,文件内容通常被...

    mysql显示乱码问题

    ### MySQL显示乱码问题解析及解决方案 在使用MySQL数据库时,可能会遇到字符显示乱码的情况。这通常是由于字符集设置不正确导致的问题。本篇文章将详细介绍如何排查与解决Linux系统下MySQL显示乱码的问题。 #### ...

    串口读转发到Socket.zip_SERIAL_victorykhr_zip

    标题中的"串口读转发到Socket.zip_SERIAL_victorykhr_zip"表明这是...如果你对串口通信和Socket编程不熟悉,建议先学习相关的基础知识,例如《UNIX网络编程》、《串行通信编程》等书籍,以便更好地理解和使用这个项目。

    计算机软件-商业源码-局域网消息发送.zip

    商业软件对数据安全和用户隐私有严格要求。在局域网消息发送中,应考虑采用加密技术如SSL/TLS保证数据传输的安全性,防止信息被窃取或篡改。此外,还需要设计合理的权限控制机制,限制非法访问和操作。 七、用户...

    远程服务器云服务器1

    不同的操作系统和编程环境可能需要不同的处理方式,但核心是保证数据在传输和解析过程中不丢失或变乱。通过遵循正确的配置和编码转换策略,可以避免这些问题,使得Android应用以及其他各种平台的应用程序都能顺利地...

    建立社工库 (2).pdf

    - 不规则间隔的txt文件,需要编写代码进行解析和整理,确保数据的正确导入。 5. **数据迁移**: - 从MSSQL到MySQL的迁移,可以使用MySQL Migration Toolkit、Access作为中间媒介,或者BCP工具配合`load data ...

    Ruby在cmd下中文显示乱码以及不支持OpenSSL的问题解决

    在使用Ruby进行开发的过程中,特别是在Windows系统的CMD环境中,经常会遇到中文显示乱码的问题。这主要是由于系统默认编码与Ruby解释器处理中文字符时所采用的编码不一致造成的。 **解决方法:** 1. **更改CMD的...

    封包讲解

    这通常涉及到底层的网络编程API,例如在Windows中可以使用Winsock API,在Linux中可以使用socket API。 #### 3. 封包的接收与解析 - **接收封包**:网络接口接收到封包后,操作系统会将它们传递给相应的应用程序或...

    android中简单的客户端

    在实际应用中,通常会扩展这个基础架构,例如添加错误处理、数据解析和用户交互功能。同时,服务器端也可能需要处理多个并发连接,以及更复杂的数据交换逻辑。了解这些基础知识是构建更复杂Android网络应用的前提。

    Tomcat调优配置技巧[参考].pdf

    Tomcat调优是提高应用程序性能的关键步骤,尤其对于处理高并发和大数据量的应用来说更为重要。以下是一些关键的Tomcat调优配置技巧: 一、启用Gzip压缩 为了减少网络流量,可以在Tomcat配置中启用Gzip压缩。在`...

    天龙私服假设问题集

    ### 天龙私服假设问题集解析 #### 一、SecureCRT或WinSCP登录Linux问题解决方法 当使用SecureCRT或WinSCP尝试登录Linux系统时,可能会遇到“机器双方可以ping通,但无法连接”的问题。这通常是由于安全设置不当...

    Tomcat调优配置技巧[文].pdf

    通过配置`&lt;GlobalNamingResources&gt;`和`&lt;Context&gt;`元素,可以开启Server Side Includes (SSI)功能,支持`.shtml`文件的解析。这有助于简化页面动态更新和提高代码复用。 六、修改网站访问端口为80 默认的80端口是...

    易语言程序免安装版下载

    易语言5.1 相对于易语言5.0更新说明: ... 修改XML解析支持库,增加写出CDATA数据功能,解决解析XML时错误的丢弃换行和TAB字符的BUG,解决读取节点值时对CDATA数据进行转义处理的BUG。 20. 修改扩展界面支持库...

    mysql升级教程文档

    ### MySQL升级教程文档知识点解析 #### 一、MySQL升级概览 MySQL的升级是指将当前正在使用的MySQL版本更新至更高版本的过程。升级的目的通常是为了利用新版本提供的性能优化、安全增强以及新特性等功能。 #### 二...

    android开发资料

    - **6.2 数据存储之SharedPreferences**: SharedPreferences是一种轻量级的数据存储方式,适用于保存简单的键值对数据。 - **6.3 数据存储之Files**: 文件存储是最常见的数据存储方式之一,可以将数据保存为文件的...

    Tomcat性能调优

    - **解决中文乱码问题**:确保Tomcat和应用程序正确地处理中文字符集。 - **解决中文文件下载问题**:确保下载中文命名的文件时,文件名能够被正确解析。 - **隐藏目录列表**:禁止用户直接浏览某个目录下的文件,...

    python实现udp聊天窗口

    在这个例子中,假设都是UTF-8编码,但如果涉及不同平台(如Linux和Windows),可能需要考虑GBK编码。在实际应用中,应确保发送方和接收方使用相同的编码标准,以避免乱码问题。 8. **关闭套接字**: UDP套接字通常...

Global site tag (gtag.js) - Google Analytics