php+MS sql server 2000,网页乱码问题? 补充一点,用phpinfo()查看php配置,知default_charset 为空(no value) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有时候和文件保存时的设置有关我以前有时候,碰到乱码,就得用editplus打开,再另存一下。然后在转换器那里设置utf-8 文件本身保存的是utf-8模式的MS sql server数据库的相关字段是ntext,这种应该是unicode保存的吧?排序规则我看了,是数据库默认,即,windows 排序-Chinese_PRC,现在的情况是,网页如果选择gb2312编码(无论是指定,还是不指定而手动选择),则数据库输出的字符(有中文也有日文)能正确显示。但这时,网页里原来直接写的文字是乱码。反之,选择utf-8,则情况正相反。但是,输出完全同样的内容,用asp,同时设置codepage=65001 ,和charset=utf-8,则页面的内容,和数据库输出的字符,全部都能正常显示。 那你可以把你的数据库的数据转码一下,取出后用iconv等反之,你的页面可以用utf-8的 同意楼上,可统一为utf-8,即网页保存的时候用utf-8,数据库读出的进行编码转换,用iconv函数转即可。 数据库的字段是nvarchar还是varchar?有可能是字段类型问题哦 数据库字段是nvarchar用iconv的话,语法是类似这样用的吗?iconv("ISO-8859-1", "UTF-8", $line[0])但我怎么知道,这个从数据库读出来的字段$line[0]的编码是什么?就是说iconv的第一个参数是什么?还有我发现,服务器上的页面,从数据库里读出来的字段,选择页面编码GB2312可以正常显示.但在本机上,选择gb2312却是乱码.服务器是windows 2003 serever,本机是 windows 2000 advanced server. 我想可能就和这几个方面有关:1,数据库的字段类型,如varchar 或者nvarchar2,字段的排序规则3,php页面的头编码指定,header(header("Content-type:....4,php页面的htm 头 <meta http-equiv="Content-Type" content="text/html.....5,字符转换,iconv6,文件本身的存储编码这些方面有的地方不是很熟.但基本上能试的都试过了,总是乱码.隐约好象记得,php手册上User contributed notes里好象提过,这可能是mssql扩展的处理汉字方面的一个bug.最后他是换用odbc连接解决乱码问题的.我再找找看. 你的问题是数据库里读出来的编码和网页编码不一致。第一种方法:把网页存为GBK编码,网页里设置charset=gbk第二种方法:用iconv或者mb_convert_encoding把从数据库里读出的字符串从GBK转换到UTF-8编码,网页里设置charset=utf-8。iconv('GBK','UTF-8',$string)就是把字符串从GBK转换到UTF-8. sawfish(sawfish)按你说的,用iconv('GBK','UTF-8',$string),问题解决!太感谢了!我现在想问一下,你是怎么知道 数据库存储的是GBK格式的而不是别的比如utf-8格式的呢? 还有一个问题,是每一处数据库输出字符都要用iconv('GBK','UTF-8',$string)转换吗?有没有简便的方法可以在页面里设置一次就整个页面都有效? 数据库的语言设置为日语的,MYSQL设置为eucjpms,不知道你用的数据库怎么设置 如果自己写数据库连接部分,可以试试这样:$conn = @new COM("ADODB.Connection", NULL, '65001'); lwxhami() 如果自己写数据库连接部分,可以试试这样:$conn = @new COM("ADODB.Connection", NULL, '65001');-----------------------------------编码我用iconv('GBK','UTF-8',$string),已经可以解决,用你说的这种方法我刚才也试了一下,也可以解决。谢谢!不过用com adodb的相关方法觉得没有mssql 扩展的相关函数用起来习惯。不过还是谢谢。 用iconv('GBK','UTF-8',$string),问题解决!我还有两个问题:怎么知道 数据库存储的是GBK格式的而不是别的比如utf-8格式的呢?有没有简便的方法可以在页面里设置一次就整个页面都有效?还是只能每个字符串都要转换? 这个问题我也遇到过,是在做日文网站的时候,Myslq+php+linux当我把数据和文件传到linux服务器上的时候,数据库中显示的内容是乱码,当然页面也是显示乱码的了也是搞了很久,后来问题解决了,问题出在导数据库上linux服务器的数据库的编码上解决的方法是:是sql后面使用以下:TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin就是把数据库的编码确定为 utf8 就是把数据库的编码确定为 utf8--------------------怎么设置MS sql的数据库编码?我使用的mssql扩展连接数据库的 mssql_connect,mssql_query等操作,好像没有设置编码的参数 还是没解决问题?楼主最后是如何解决的呀?iconv( 'GBK ', 'UTF-8 ',$string),这样单个设置太麻烦了 odbtp可以解决你的问题,我们公司一直在使用,情况良好http://odbtp.sourceforge.net/ PHP视频网站点播到一半跳回到开始? 关于IIS6.0+FastCgi执行超级慢或者根本就不执行的问题 php有没有类似asmx?wsdl这样子的接口技术? 有没有谁做过paypal接口的开发 如取得 指定日期内的 交易的数据 wget或者lynx的问题 传值问题,有代码! PHP,ajax字符编码问题 【请教】如何调用自己? 为什么需要gd.so php切换数据库的问题,在线等 ■■■■PHP ADODB类 的大谎言 大侠们!!帮帮忙!
MS sql server数据库的相关字段是ntext,这种应该是unicode保存的吧?排序规则我看了,是数据库默认,即,windows 排序-Chinese_PRC,
现在的情况是,网页如果选择gb2312编码(无论是指定,还是不指定而手动选择),则
数据库输出的字符(有中文也有日文)能正确显示。但这时,网页里原来直接写的文字是乱码。
反之,选择utf-8,则情况正相反。但是,输出完全同样的内容,用asp,同时设置codepage=65001 ,和charset=utf-8,则页面的内容,和数据库输出的字符,全部都能正常显示。
有可能是字段类型问题哦
iconv("ISO-8859-1", "UTF-8", $line[0])
但我怎么知道,这个从数据库读出来的字段$line[0]的编码是什么?就是说iconv的第一个参数是什么?还有我发现,服务器上的页面,从数据库里读出来的字段,选择页面编码GB2312可以正常显示.但在本机上,选择gb2312却是乱码.服务器是windows 2003 serever,本机是 windows 2000 advanced server.
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连接解决乱码问题的.我再找找看.
第二种方法:用iconv或者mb_convert_encoding把从数据库里读出的字符串从GBK转换到UTF-8编码,网页里设置charset=utf-8。
iconv('GBK','UTF-8',$string)就是把字符串从GBK转换到UTF-8.
按你说的,用iconv('GBK','UTF-8',$string),问题解决!
太感谢了!我现在想问一下,你是怎么知道 数据库存储的是GBK格式的而不是别的比如utf-8格式的呢?
有没有简便的方法可以在页面里设置一次就整个页面都有效?
MYSQL设置为eucjpms,不知道你用的数据库怎么设置
如果自己写数据库连接部分,可以试试这样:
$conn = @new COM("ADODB.Connection", NULL, '65001');
-----------------------------------
编码我用iconv('GBK','UTF-8',$string),已经可以解决,
用你说的这种方法我刚才也试了一下,也可以解决。谢谢!
不过用com adodb的相关方法觉得没有mssql 扩展的相关函数用起来习惯。不过还是谢谢。
怎么知道 数据库存储的是GBK格式的而不是别的比如utf-8格式的呢?
有没有简便的方法可以在页面里设置一次就整个页面都有效?还是只能每个字符串都要转换?
当我把数据和文件传到linux服务器上的时候,数据库中显示的内容是乱码,当然页面也是显示乱码的了也是搞了很久,后来问题解决了,
问题出在导数据库上linux服务器的数据库的编码上解决的方法是:
是sql后面使用以下:
TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin就是把数据库的编码确定为 utf8
--------------------
怎么设置MS sql的数据库编码?我使用的mssql扩展连接数据库的 mssql_connect,mssql_query等操作,好像没有设置编码的参数
iconv( 'GBK ', 'UTF-8 ',$string),这样单个设置太麻烦了
http://odbtp.sourceforge.net/