php使用odbc的方式从sqlserver2005中读取中文显示出现黑点


我使用php通过odbc的方式从sqlserver中读取中文然后显示在网页中,网页的编码为UTF-8,网页源代码文件编码为UTF-8,我使用mb_convert_encoding函数将读取到的中文转为UTF8显示,在chrome下面没有问题。但是在IE8下面,能够显示中文,但是在中文后面多出一个黑点,但是查看源代码又没有这个黑点。请问这是什么原因啊?谢谢!
截图

sqlserver mb_convert_encoding php 乱码

santu 10 years, 9 months ago

在数据库设计中,需要注意一个问题就是中文的存储问题。对于固定长度的中文可以使用nchar,但是对于可变长度的中文一定要使用nvarchar,这样在用php的函数mb_convert_encoding的时候,才不会出错。如果你用了nchar,那么如果提供的字符数目不够定义的长度时,默认会填充空白字符。这样会导致编码转换出错。在UTF-8的页面里面,可以使用

mb_convert_encoding($str,"UTF-8","GBK");

来讲sqlserver的中文转换为UTF-8。默认安装sqlserver中文的时候选择的collation方式是Chinese_PRC_CI_AS。谢谢大家了。

新吉恩的道标 answered 10 years, 9 months ago

Your Answer