Linux系统下MYSQL数据库中文数据乱码问题
Java工程的编码是GBK,MYSQL数据库用的也是gbk,用的Hibernate连接池。在Windows系统下能正常运行,部署到Linux系统下查询条件如果有中文就不行...
Java工程的编码是GBK,MYSQL数据库用的也是gbk,用的Hibernate连接池。在Windows系统下能正常运行,部署到Linux系统下查询条件如果有中文就不行了,有英文可以,向数据库里存数据的话,中文全部变成?
我知道是编码问题,但具体应该怎么处理呢,求指教啊~~~ 展开
我知道是编码问题,但具体应该怎么处理呢,求指教啊~~~ 展开
展开全部
根据你的问题,数据库不在自己手边。
那首先要调查清楚,数据表的编码,看清,不是数据库,是表,表的字符集编码。
然后往前顺。
然后再java程序中转码,保证写到sql中的数据是以该数据表所用的字符集编码的就好了。
乱码出现在不同部分的通信之间
一个系统中,通常是在显式输入中文的地方发生转码错误。
比如,servlet处理从浏览器传来的数据的时候,
从资源文件读取数据的时候。
在程序中显式地硬编码字符串中文字面值的时候。
从别人的数据库读取数据的时候。
这些地方经常会跟之后的系统编码不一致,所以在这些地方使用字符串数据的时候,就要转码。
资源文件,可以用文本工具保存成需要的编码。
对于request中的数据,可以在正式处理之前加
过滤器。
对于别的数据库,可以设一个专门的过滤类来转码。
那首先要调查清楚,数据表的编码,看清,不是数据库,是表,表的字符集编码。
然后往前顺。
然后再java程序中转码,保证写到sql中的数据是以该数据表所用的字符集编码的就好了。
乱码出现在不同部分的通信之间
一个系统中,通常是在显式输入中文的地方发生转码错误。
比如,servlet处理从浏览器传来的数据的时候,
从资源文件读取数据的时候。
在程序中显式地硬编码字符串中文字面值的时候。
从别人的数据库读取数据的时候。
这些地方经常会跟之后的系统编码不一致,所以在这些地方使用字符串数据的时候,就要转码。
资源文件,可以用文本工具保存成需要的编码。
对于request中的数据,可以在正式处理之前加
过滤器。
对于别的数据库,可以设一个专门的过滤类来转码。
展开全部
出现???,linux系统的字符集,应该是iso-8859-1。
如果你的项目是j2se项目的话,执行java命令时,可以指定参数,
java -Dfile.encoding=GBK XXX
如果是,j2ee项目的话,建议设置,字符集过滤器。
两外,指定Hibernate配置中mysql的url地址的字符集。
如果你的项目是j2se项目的话,执行java命令时,可以指定参数,
java -Dfile.encoding=GBK XXX
如果是,j2ee项目的话,建议设置,字符集过滤器。
两外,指定Hibernate配置中mysql的url地址的字符集。
追问
我的项目是j2ee的,指定Hibernate配置中mysql的url地址的字符集?指定为gbk么?
追答
试试,指定mysql,的url地址的字符集为gbk,
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=gbk
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在shell界面使用mysql -e "这边放查询的语句"
比如:
#mysql -e "select * from database.table where name ='查询中文姓名'"
比如:
#mysql -e "select * from database.table where name ='查询中文姓名'"
追问
不太方便,因为机器是别人的~从工程里能直接搞定么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
linux默认字符集是utf-8的 把mysql的字符集和项目编码也设置成utf-8吧
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以设置数据库的编码格式,你网上查下
追问
如果不设数据库编码呢,比如只从项目入手,得怎么转码?因为服务器在别人那里,不方便总去弄,希望能改好项目后直接部过去~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询