• 乱码问题小记


    这几天遇到了个乱码问题。想想还是很纠结的:

    1. >首先HTML 文件里面需要设置<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />表示显示页面的时候需要gb2312字符集,所以如果有输出从服务器端传过来。需要的是gb2312编码的字符集
    2. >在form 表单里面需要enctype="multipart/form-data" 不然前端传到后端会乱码,可以从firebug里面看的到中文是乱码
    3. >后端显示的时候如果直接输出。可以加 header来定义字符集如header('Content-Type: application/json; charset=gbk');如果不加header 可以在服务器上面自定义默认字符集
    4. >如果表单提交的时候 target = iframe 那么后端PHP 里面 需要加上header 或者 echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />";
    5. >关于preg_match匹配中文 preg_match("/[\x{4e00}-\x{9fa5}]{1,20}/u", iconv("gb2312", "utf-8", $chineseString)));需要转码。因为这个函数是以utf-8的模式匹配的(后面有个u)否则匹配不到。
    6. >数据库方面使用$db->query('set names "gbk"'),告诉mysql服务器 我这里数据是用的gbk,希望你也给我返回gbk,不管你用的是何种编码。(这里本来会分为client编码,传输过程中编码,和期望返回编码)
    7. 后端如果输出到前端是 中文字符。不可以直接echo,json_endcode,但是json_encode不支持中文所以就需要以下函数:jsonEn
    //json处理
        public static function jsonEn($array)
        {
            self::arrayRecursive($array, 'urlencode', true);
            $json = json_encode($array);
            return urldecode($json);
    
        }
        private static function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
        {
                static $recursive_counter = 0;
    
                if (++$recursive_counter > 1000) {
    
                    die('possible deep recursion attack');
    
                }
    
                foreach ($array as $key => $value) {
    
                    if (is_array($value)) {
    
                        arrayRecursive($array[$key], $function, $apply_to_keys_also);
    
                    } else {
    
                        $array[$key] = $function($value);
    
                    }
    
    
    
                    if ($apply_to_keys_also && is_string($key)) {
    
                        $new_key = $function($key);
    
                        if ($new_key != $key) {
    
                            $array[$new_key] = $array[$key];
    
                            unset($array[$key]);
    
                        }
    
                    }
    
                }
    
            $recursive_counter--;
        }
    

      

  • 相关阅读:
    VUE body 背景色
    BUTTON莫名出现黄色边框 :focus
    VUE SVG
    【噶】字符串-680. 验证回文字符串 Ⅱ
    【噶】数组-两数之和(哈希表)
    【噶】数组-面试题 16.11. 跳水板
    【噶】字符串-58. 最后一个单词的长度
    Ajax_Jason 使用小Demo
    tomcat_部署项目以及相关问题
    js 表单的选择与反选简单操作
  • 原文地址:https://www.cnblogs.com/akulubala/p/3071046.html
Copyright © 2020-2023  润新知