ITPUB??ì3
ITPUB论坛 » WEB程序开发 » php5不能从sql2005取汉字纪录

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: php5不能从sql2005取汉字纪录
离线 liyihongcug
高级会员



精华贴数 1
个人空间 0
技术积分 9579 (125)
社区积分 1043 (933)
注册日期 2004-7-15
论坛徽章:8
会员2007贡献徽章铁扇公主授权会员2008年新春纪念徽章开发板块每日发贴之星数据库板块每日发贴之星
开发板块每日发贴之星ITPUB新首页上线纪念徽章    

发表于 2007-12-17 15:33 
php5不能从sql2005取汉字纪录

php4 有php_iconv.dll  可以进行 iconv转换
但是php5没有php_iconv.dll  只能下载(但是下载版本为4)
如何在php5从sql2005取汉字纪录


只看该作者    顶部
离线 liyihongcug
高级会员



精华贴数 1
个人空间 0
技术积分 9579 (125)
社区积分 1043 (933)
注册日期 2004-7-15
论坛徽章:8
会员2007贡献徽章铁扇公主授权会员2008年新春纪念徽章开发板块每日发贴之星数据库板块每日发贴之星
开发板块每日发贴之星ITPUB新首页上线纪念徽章    

发表于 2007-12-17 21:37 
iconv("UTF-8","GB2312",$dd[2])


只看该作者    顶部
离线 liyihongcug
高级会员



精华贴数 1
个人空间 0
技术积分 9579 (125)
社区积分 1043 (933)
注册日期 2004-7-15
论坛徽章:8
会员2007贡献徽章铁扇公主授权会员2008年新春纪念徽章开发板块每日发贴之星数据库板块每日发贴之星
开发板块每日发贴之星ITPUB新首页上线纪念徽章    

发表于 2008-1-3 14:22 
发现我的page   是'UTF-8'   不能手工更改为'gb2312'
(如果是'gb2312'的page,是可以让有汉字的sql成功执行的,测试了)
现在发现page   是'UTF-8'   不能手工更改为'gb2312'
不知道什么原因


只看该作者    顶部
离线 liyihongcug
高级会员



精华贴数 1
个人空间 0
技术积分 9579 (125)
社区积分 1043 (933)
注册日期 2004-7-15
论坛徽章:8
会员2007贡献徽章铁扇公主授权会员2008年新春纪念徽章开发板块每日发贴之星数据库板块每日发贴之星
开发板块每日发贴之星ITPUB新首页上线纪念徽章    

发表于 2008-1-3 14:28 
网上能找到的办法都试过了,不得不冒昧发此贴求救!症状如下:
从mysql数据库里面拿出来字符串,在页面上显示。全部设置成utf-8,在本地的tomcat上跑,一切正常;
上传到某JSP供应商提供的空间,发现全是乱码,修改IE的编码方式,各种编码方式都是乱码;
此时,mysql里面表都是unicode-general-ci,通过phpmysqladmin可以正常读出其中的中文内容。jsp页面中的 <%@page   contentType= "text/html;   charset=UTF-8 "> ,meta处也是text/html;charset=UTF-8.   JDBC处的连接是 "jdbc:mysql://xxx.xxx.xxx.xxx/sq_euflashdb?useUnicode=true&characterEncoding=gb2312 "

修改JSP里面的 <%@   page   language= "java "   contentType= "text/html;   charset=UTF-8 "> 改成charset=ISO-8859-1,发现此时在IE里面手动修改编码方式为gb2312的话就可以正常显示;

所以此时想让IE那边编码自动设置成gb2312,因此修改meta,但是毫无效果,一切照旧,IE编码还是自动变成ISO,估计是@page那边的ISO-8859-1指定的


希望最好能够都用UTF-8,实在不行的话能不能让IE自动设置成gb2312呢?因为是对方提供的服务器,没有权限修改tomcat或者重装tomcat的。而且通一台服务器上webapps下的另一个项目正常工作,正常返回utf-8啊,百思不得其解!
恳请各位帮忙,能够提供点线索,分不够可另开贴再加!


问题点数:200 回复次数:5 显示所有回复显示星级回复显示楼主回复     


j2093
景天
等 级:
发表于:2007-09-21 08:58:101楼 得分:80
引用别人的   


告别JSP+MySQL乱码问题zz
                                                                              
【软件环境】:
OS:   Windows   2000   SP4,   Windows   XP   SP2,   
JDK:j2sdk-1_4_2_08-windows-i586-p.exe,
Tomcat:   jakarta-tomcat-5.0.28.exe,
MySQL:   mysql-5.0.10a-beta-win32.zip;

--------------------------------------------------------------------

【写在前面的说明】   (必读):   
1> 本文将消除乱码分为三步:
> 消除页面乱码,
> 消除从MySQL中读出中文乱码,
> 消除插入MySQL数据库中的中文乱码;

2> 没有测试tomcat-5.5.   +   jdk5,但我想应该更容易些吧;

3> 先安装J2SDK,后装Tomcat,如果J2SDK安装在c:\j2sdk1.4.2_08,它同时会在C:\Program   Files\Java\Jre下安装一个public的Jre,在安装Tomcat时,一定要将JDK指向C:\j2sdk1.4.2_08,否则无法编译JSP;

4> 注意采用本方法后,操作数据库时的相关中文数据无需做额外的字符转换处理,即在所有的字符处理过程中,都以GB2312或GBK来处理;

5> 随本文发行的有两个纯JSP文件和一个SQL脚本,testCh***t.jsp用来测试“消除纯JSP和HTML页面中的乱码”,tstMySQL.jsp用来测试“消除从MySQL中读出中文的乱码”,均无需手工编译,放在任一个Web目录下即可使用。bookshop.sql为tstMySQL.jsp中用到的数据库,也为《隽隽在线书店》中的更新数据库;

6> 在2k中比在XP中看到乱码的情况多一些,表现为在2K中meta标记不起作用,只能使用page指令,具体原因不太清楚,还望赐教。

7> 关于MySQL的客户端功具,个人习惯使用MySQL   CC,虽然它已不受支持,但本书中全部脚本(使用My   SQL数据库的案例)都可以在MySQL   CC中正常运行,有些在mysql-query-browser-1.1.13-win.msi出错;

8> 从MySQL中读出的乱码,如果用MySQL   客户端显示正常而在网页中乱码,在确定数据库连接串中的字符集正确的情况下,把WEB-INF/classes/下,不是你创建的库删除。例如本书《在线书店》就存在此问题,让WEB-INF/classes/目录下只剩bookshop目录,则可解决乱码。

9> 每次修改Bean后,最好重启tomcat,而且最好把Tomcat中Work目录下的相应目录删除,否则可能导致你的修改没有更新,陷入进一步的痛苦中……

10> 修改JSP文件无需重启Tomcat;

11> 用SELECT语句检索出的数据,因为使用Map缓存数据,key是区分大小写的,应统一为大写或小写。但SELECT语句与数据表之间不区分大小写;
如:   

strSQL   =   "SELECT   ID,   Name   FROM   BookInfo   "
……
rs.getInt( "id ");   //   错误
rs.getInt( "ID ");   //   正确

12> 新版MySQL中加密密码不应使用password,而应使用MD5或   SHA1;本书《医院门诊》存在此问题,因而无法登录;

13> 如果使用下面几步仍不能消除从MySQL中读出的中文乱码,把WEB-INF\classes\目录下非你自己开发的目录删除,此版发型的《隽隽在线书店》存在此问题;

14> 如果以上方法仍有乱码存在,应该是自己程序的细节问题了,比如有些地方特意调用了编码转换函数,
如   uniStr   =   new   String(tempByte, "ISO8859_1 ");

15> 注意编码表示方式在JSP与MySQL中的区别,如下:
JSP:   GB2312,   GBK,   UTF-8....
MySQL:   gb2312,   gbk,   utf8....

-------------------------------------------------------

关键问题:编码,建议统一为GB2312或GBK,本文使用GB2312,GBK未测试;

【Step1】:   消除纯HTML页和JSP页在Tomcat环境下运行的乱码

这个是由于流览器无法选择编码方式造成的,   手动从IE中选择“GB2312”即可解决;也可以网页中加入META标记或Page指令;
META标记如下:
<meta   http-equiv= "Content-Type "   content= "text/html;   ch***t=GB2312 ">
Page指令如下:
<%@   page   language= "java "   contentType= "text/html;   ch***t=GB2312 "   pageEncoding= "GB2312 "%>
前面说明中已经提到,   META在2K下可能不起作用(XP下时了时坏),因为简单起见,加入Page指令似乎是一个一劳永逸的事情;

总结:   加入Page指令,一定可以使纯JSP页面或HTML页面在Tomcat环境下正常显示。


【Step2】:   消除从MySQL数据库中读出中文的乱码

分为两个目标:   step1:   从MySQL客户端查看中文正常,   step2:   从网页中查看中文正常;

1:   在用SQL脚本创建数据库前,设置MySQL的默认编码方式为“gb2312”,
此步可以在mysql-administrator-1.1.0-rc-win.msi中完成,或者是MySQL   Server向导;
这样设置完毕后再用SQL   脚本创建数据库,   注意如果SQL脚本中有设置字符集为latin1或utf-8的语句,一定要删除。
已发现目前版本《在线书店》中的SQL脚本中带有设置默认字符集为latin1,一定要删除!

创建数据库完毕后,用MySQL   CC或MySQL   Admin可检查所创建的数据库的字符集,如果正确,则用MySQL   CC或MySQL   Admin都可以正常查看中文;

2:   一般情况下,到这一步,在网页中已经基本能正常显示中文了,但凡事总有例外,可以在数据库连接串处再特别说明一下:
String   url   = "jdbc:mysql://localhost/BookStore?useUnicode=true&characterEncoding=gb2312 ";
conn=DriverManager.getConnection(url, "root ", " ");


一般情况下用   String   url   = "jdbc:mysql://localhost/BookStore "应该就能正常显示中文。


总结:修改MySQL   Server数据库默认字符集为“GB2312”,从MySQL读出中文可正常显示;

例外:   此时仍有可能还有乱码,如本书光盘中的《在线书店》,请参见前面的说明。


【Step3】:   消除插入MySQL数据库中的中文乱码

此步比较简单,在JSP页面中加入如下代码:
request.setCharacterEncoding( "GB2312 ");




   

fancyou

等 级:
发表于:2007-09-21 11:45:292楼 得分:70
http://blog.chinaunix.net/u/18918/showart.php?id=266854

   

for_cyan
Cyan
等 级:
发表于:2007-09-21 12:06:203楼 得分:50
恩,url上jdbc:mysql://xxx.xxx.xxx.xxx/sq_euflashdb?useUnicode=true&characterEncoding=gb2312
带上characterEncoding

   

vive
白起
等 级:
发表于:2007-09-22 14:09:334楼 得分:0
谢谢各位,终于解决了!
是mysql的数据问题,可能mysql存储的是gbk.我把远程的mysql库删掉,重新导入了一遍,就搞定了!谢谢大家!

   

yeahcheung

等 级:
发表于:2007-10-10 11:48:465楼 得分:0
本机配置的java环境:jdk1.6.0   ,tomcat6.0

在MyEclipse6.0环境调试下通过。


发表地址:请点
在我的日志里,有问题请提问


只看该作者    顶部
离线 liyihongcug
高级会员



精华贴数 1
个人空间 0
技术积分 9579 (125)
社区积分 1043 (933)
注册日期 2004-7-15
论坛徽章:8
会员2007贡献徽章铁扇公主授权会员2008年新春纪念徽章开发板块每日发贴之星数据库板块每日发贴之星
开发板块每日发贴之星ITPUB新首页上线纪念徽章    

发表于 2008-1-3 14:49 
mssql_query(iconv('UTF-8','GBK',$sql))


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问