1。select from v$nls_parameters
查询nls的参数,获得数据库服务器端的字符编码
NLS_LANGUAGE
NLS_CHARACTERSET
2。修改本地环境变量,设置
NLS_LANG = SIMPLIFIED CHINESEZHS16GBK //这个是我们的数据库字符编码
NLS_LANG格式:
NLS_LANG = language_territorycharset
有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:language 指定服务器消息的语言。
territory 指定服务器的日期和数字格式。
charset 指定字符集
试试看下面这个
Systemoutpritnln(new String(rolesget(0)getName()getBytes("iso-8859-1"),"utf-8"));
你的问题可能有两个原因 :
1 数据库使用 非 utf-8 编码
2 网页没有指定为 utf-8编码
第二种情况的可能性更大,浏览器默认使用gbk编码
解决方法 :
1 使用header()函数指定编码,在脚本第一行加入 : header('Content-Type:text/html;chaset:utf-8');
2 使用
<meta >
中文乱码问题经常会出现
1、数据库、数据表、字段 编码格式要保持一致
2、如果在doc界面录入数据,要保持当前编码格式与数据表编码格式一致
3、php读取数据显示,要保持文件的编码格式、html页面的编码格式同数据库一致,编码格式为utf-8或gb2312或gbk
4、php连接数据库之后mysql_query('set names gbk')
你的问题应该是数据库编码格式不是utf-8,查看一下
初步:格式统一
str
=
new
String(strgetBytes("ISO-8859-1"),
"utf-8");
这里不用转,可以去掉。{ %@page
language
=
"java"contentType
=
"text/html;
charset
=
gb2312
"%String
url
=
"jdbc:mysql://localhost/jdbcuseUnicode=true&characterEncoding=gb2312";
}这转码格式统一用UTF-8。另外更改该显示页面的本身属性utf-8。数据库对varchar类型字段统一UTF-8类型。[此处统一编码即可]中间[此处用不到]:利用js自带的函数对中文地址栏上传参进行转码。例如{var
actname
=
encodeURIComponent(encodeURIComponent('<%=requestgetAttribute("actname")%>'));}尾声[此处用不到]:获取后
URLDecoderdecode(actname,
"utf-8");
最后还不行,只能自己写个转码工具类进行转。
首先要检查是数据库里数据的乱码
还是在servlet
outprint时乱码。
如果只是输出乱码。在输出前加上
responsesetContentType("text/html;charset=GBK");
就好。
就是给要输出的流内容编码成gbk
数据库数据本身乱码的话,就要看数据库的编码设置了。。
怀疑是pymssqlconnect指定的字符集跟数据库使用的字符集不符,尝试修改charset。
也可以参考《pymssql中文显示乱码》里面类似的方法来处理
unicode变量encode('latin1')decode('gbk')
以上就是关于sql查询的数据出现乱码问题全部的内容,包括:sql查询的数据出现乱码问题、从数据库取出数据乱码问题、php输出固定长度的数据库字段乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)