自己编写的中文PHP网页,如何在Unicode(UTF-8)编码下能正常显示汉字而不是乱码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己编写的中文PHP网页,如何在Unicode(UTF-8)编码下能正常显示汉字而不是乱码?相关的知识,希望对你有一定的参考价值。

自己编的php网页,发现在Unicode(UTF-8)编码下,中文显示乱码。必须把浏览器编码改成GBK才能正常显示。但是我看其他网站(比如百度),也是Unicode(UTF-8)编码并且中文显示正常。如何将我自己的中文网站也改成在Unicode(UTF-8)编码下,也能正常地显示中文?

造成网站出现乱码的原因如下:

    代码储存文件的格式不是utf-8的;

    数据库编码格式不是utf-8的;

    数据传输格式不是utf-8的(看数据库链接的时候有没有这句: mysql_query("set names utf8"));

    html头部的<meta /> 标签没有指定编码格式(没有这句话:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />);

    php的头部没有设置header("Content-type: text/html; charset=utf-8");

    css文件头部没有设置编码格式 (@CHARSET "UTF-8";);

等等. 如果你的文件出现乱码, 请对比以上进行修改即可

参考技术A 编写代码是里面设置为utf-8

临时用VB做了个抓取网页数据,但是网页返回的中文是unicode编码,怎么转为中文。

我是希望一次将抓取到的源码中是unicode的都转为中文。分别提取出来的转已会。

'//vb将unicode转成汉字,如:\u8033\u9EA6,转后为:耳麦

//unicode编码转换为中文
    public static string UnicodeToGB(string text)
    
        System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(text, "\\\\\\\\u([\\\\w]4)");
        if (mc != null && mc.Count > 0)
        
            foreach (System.Text.RegularExpressions.Match m2 in mc)
            
                string v = m2.Value;
                string word = v.Substring(2);
                byte[] codes = new byte[2];
                int code = System.Convert.ToInt32(word.Substring(0, 2), 16);
                int code2 = System.Convert.ToInt32(word.Substring(2), 16);
                codes[0] = (byte)code2;
                codes[1] = (byte)code;
                text = text.Replace(v, Encoding.Unicode.GetString(codes));
            
        
        else
        
 
        
        return text;
    

给你个C#.net的代码做一下参考,原理都是类似的。

参考技术A Private Declare Function MultiByteToWideChar Lib "kernel32 " (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32 " (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
Private Const CP_ACP = 0 ' default to ANSI code page
Private Const CP_UTF8 = 65001 ' default to UTF-8 code page
参考技术B 用strconv(.responsebody,&H80)

以上是关于自己编写的中文PHP网页,如何在Unicode(UTF-8)编码下能正常显示汉字而不是乱码?的主要内容,如果未能解决你的问题,请参考以下文章

如何把 \u8BF7\u9009\u62E9 这样的字符串转为汉字 网页特效代码演示

Unicode Python 字符串中的字节数

php 如何将unicode码转换成汉字

如何在 PHP 中从 Unicode 转换表情符号?

临时用VB做了个抓取网页数据,但是网页返回的中文是unicode编码,怎么转为中文。

在源文件中使用 Unicode 并且缺少 unicode 符号