首先你要搞清楚,插入到数据库的字符是乱码,如果是,则需要在插入数据库之前,进行字符编码转换。如果是通过WEB程序插入,则需要在WEB层设置字符格式和转换。如果数据库中不是乱码,在查询显示的时候是乱码,则需要跟踪,看信息在哪里交互的时候出现了乱码,设置转换即可。
比如,WEB应用,在JSP 里面 设置 <%@ page language="java" import="javautil" pageEncoding="GBK"%>
你从数据库获得的信息是以UTF-8进行编码的,当传递到eclipse下,获得的数据是以GB2312 编码的,即eclipse会用GB2312对数据库中以UTF-8 编码的字符再次编码,得到的肯定是乱码。
解决方法,推荐的是使用String a = new String("数据库数据"getBytes("ISO8859-1"),"GB2312");将字符转换为GB2312,这样应该就显示正常了
Oracle数据库字符集最有用的参数是NLS_LANG参数,格式如下: NLS_LANG = language_territorycharsetanguage:服务器消息的语言, 是中文还是英文Territory: 服务器的日期和数字格式,Charset: 指定字符集。
登录以sysdba登录,查看视图select from v$nls_parameters,可以知道具体的字符集参数,正常的应该是1NLS_LANGUAGE=SIMPLIFIED CHINESE2NLS_TERRITORY=CHINA3NLS_CHARACTERSET=ZHS16GBK然后有问题就去修改参数文件里面的参数,最好做个备份哦!因为改字符集有风险。客户端设置(linux) $NLS_LANG=“simplified chinese”_chinazhs16gbk $export NLS_LANG数据库服务器字符集select from nls_database_parameters是表示数据库的字符集,或者v$nls_parameters 客户端字符集环境select from nls_instance_parameters或者v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 会话字符集环境select from nls_session_parametersv$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。以上都没问题 就会OK了,(仅供参考,若有雷同纯属巧合)
以上就是关于导入mysql数据库后中文全部变成问号,英文变大写全部的内容,包括:导入mysql数据库后中文全部变成问号,英文变大写、Java中连接数据库时汉字都变成问号是怎么回事、oracle到mysql中文变成问号,改了字符集还是没用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)