php+MS sql server 2000,网页乱码问题?

wzhiyuan 2007-03-16 09:46:32
环境:php 4.3,用mssql 扩展连接的mssql server 2000,
服务器 windows2003 ,IIS+php isapi

问题:网页里有直接写的中日文,同时也有从数据库读出的中日文,
数据库的相关字段为nvarchar,排序规则为数据库默认(windows排序:Chinese_PRC).
无论怎么样设置编码(utf-8,gb2312两者在php header,和htm meta 两个地方排列组合 ),都会出现一部分乱码(即或者是网页中直接写的文字是乱码,或者从数据库读出的数据库是乱码)。
请问这个问题怎么解决?



...全文
1931 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
szjohnz702715 2008-11-14
  • 打赏
  • 举报
回复
odbtp可以解决你的问题,我们公司一直在使用,情况良好
http://odbtp.sourceforge.net/
szjohnz702715 2008-11-14
  • 打赏
  • 举报
回复
尔特让他
free212 2008-02-22
  • 打赏
  • 举报
回复
还是没解决问题?

楼主最后是如何解决的呀?
iconv( 'GBK ', 'UTF-8 ',$string),这样单个设置太麻烦了
chenguoheart 2007-03-21
  • 打赏
  • 举报
回复
这个问题我也遇到过,是在做日文网站的时候,Myslq+php+linux
当我把数据和文件传到linux服务器上的时候,数据库中显示的内容是乱码,当然页面也是显示乱码的了

也是搞了很久,后来问题解决了,
问题出在导数据库上linux服务器的数据库的编码上

解决的方法是:
是sql后面使用以下:
TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin

就是把数据库的编码确定为 utf8
wzhiyuan 2007-03-21
  • 打赏
  • 举报
回复
就是把数据库的编码确定为 utf8
--------------------
怎么设置MS sql的数据库编码?我使用的mssql扩展连接数据库的 mssql_connect,mssql_query等操作,好像没有设置编码的参数
lwxhami 2007-03-20
  • 打赏
  • 举报
回复
如果自己写数据库连接部分,可以试试这样:

$conn = @new COM("ADODB.Connection", NULL, '65001');
hzg7361 2007-03-20
  • 打赏
  • 举报
回复
数据库的语言设置为日语的,
MYSQL设置为eucjpms,不知道你用的数据库怎么设置
wzhiyuan 2007-03-20
  • 打赏
  • 举报
回复
还有一个问题,是每一处数据库输出字符都要用iconv('GBK','UTF-8',$string)转换吗?
有没有简便的方法可以在页面里设置一次就整个页面都有效?
wzhiyuan 2007-03-20
  • 打赏
  • 举报
回复
sawfish(sawfish)
按你说的,用iconv('GBK','UTF-8',$string),问题解决!
太感谢了!

我现在想问一下,你是怎么知道 数据库存储的是GBK格式的而不是别的比如utf-8格式的呢?
wzhiyuan 2007-03-20
  • 打赏
  • 举报
回复
用iconv('GBK','UTF-8',$string),问题解决!

我还有两个问题:
怎么知道 数据库存储的是GBK格式的而不是别的比如utf-8格式的呢?
有没有简便的方法可以在页面里设置一次就整个页面都有效?还是只能每个字符串都要转换?
wzhiyuan 2007-03-20
  • 打赏
  • 举报
回复
lwxhami()
如果自己写数据库连接部分,可以试试这样:
$conn = @new COM("ADODB.Connection", NULL, '65001');
-----------------------------------
编码我用iconv('GBK','UTF-8',$string),已经可以解决,
用你说的这种方法我刚才也试了一下,也可以解决。谢谢!
不过用com adodb的相关方法觉得没有mssql 扩展的相关函数用起来习惯。不过还是谢谢。
eplanet 2007-03-19
  • 打赏
  • 举报
回复
把页面和数据库的编码调整一下就好了
两边需要一致。
sawfish 2007-03-19
  • 打赏
  • 举报
回复
你的问题是数据库里读出来的编码和网页编码不一致。

第一种方法:把网页存为GBK编码,网页里设置charset=gbk
第二种方法:用iconv或者mb_convert_encoding把从数据库里读出的字符串从GBK转换到UTF-8编码,网页里设置charset=utf-8。
iconv('GBK','UTF-8',$string)就是把字符串从GBK转换到UTF-8.
wzhiyuan 2007-03-19
  • 打赏
  • 举报
回复
我想可能就和这几个方面有关:
1,数据库的字段类型,如varchar 或者nvarchar
2,字段的排序规则
3,php页面的头编码指定,header(header("Content-type:....
4,php页面的htm 头 <meta http-equiv="Content-Type" content="text/html.....
5,字符转换,iconv
6,文件本身的存储编码

这些方面有的地方不是很熟.但基本上能试的都试过了,总是乱码.
隐约好象记得,php手册上User contributed notes里好象提过,这可能是mssql扩展的处理汉字方面的一个bug.最后他是换用odbc连接解决乱码问题的.我再找找看.
wzhiyuan 2007-03-19
  • 打赏
  • 举报
回复
数据库字段是nvarchar

用iconv的话,语法是类似这样用的吗?
iconv("ISO-8859-1", "UTF-8", $line[0])
但我怎么知道,这个从数据库读出来的字段$line[0]的编码是什么?就是说iconv的第一个参数是什么?

还有我发现,服务器上的页面,从数据库里读出来的字段,选择页面编码GB2312可以正常显示.但在本机上,选择gb2312却是乱码.服务器是windows 2003 serever,本机是 windows 2000 advanced server.
hymxtang 2007-03-19
  • 打赏
  • 举报
回复
学习~帮顶
Sing-Z 2007-03-19
  • 打赏
  • 举报
回复
数据库的字段是nvarchar还是varchar?
有可能是字段类型问题哦
liangtao95 2007-03-19
  • 打赏
  • 举报
回复
是不是页面编码问题??
goldily 2007-03-19
  • 打赏
  • 举报
回复
同意楼上,可统一为utf-8,即网页保存的时候用utf-8,数据库读出的进行编码转换,用iconv函数转即可。
warran21 2007-03-17
  • 打赏
  • 举报
回复
有时候和文件保存时的设置有关

我以前有时候,碰到乱码,就得用editplus打开,再另存一下。然后在转换器那里设置utf-8
加载更多回复(7)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧