本文目录一览:
- 1、php对字符串转换编码后,在不同浏览器里面显示的为何不一样,有的是乱码?求良方~
- 2、php怎样判断字符串是什么编码
- 3、php 怎样判断字符串是哪种编码
- 4、php如何输出中文json格式字符串
- 5、PHP mb_convert_encoding 获取字符串编码类型实现代码
- 6、PHP中如何把一个字符串转换为utf-8编码的 ?如题 谢谢了
php对字符串转换编码后,在不同浏览器里面显示的为何不一样,有的是乱码?求良方~
你好
乱码问题分为好几种情况
大部分情况下是编码不统一造成的
以utf-8为例
1、网页格式(在浏览器页面单击
右键——编码——
utf-8
)
2、数据库字符集(在你用到的数据库上点右键——数据库属性——选择utf8(UTF-8
Unicode)
3、数据库表问题(以mysql为例
选定你取数据的表
右键——设计表——选定你的字段看下方的字符集一栏是不是UTF-8)
4、取数据问题(在你的数据库连接文件中写入:mysql_query("set
names
utf8");)
5、网页制作时错误(以dreamweaver为例,打开你的页面,单击最上面的修改——页面属性
——标题/编码——在编码那一列选择UTF-8)
(注:以上问题调好后如果还有乱码
就把你的页面中文内容重新输入一遍)
php怎样判断字符串是什么编码
php判断字符编码的二个方法:
一个是用php自带的函数mb_detect_encoding,一个是个人写函数来处理。
方法1,使用mb_detect_encoding函数。
?
1
2
3
4
?php
$str=”a href="" target="_blank" class="infotextkey"脚本/a”;
echo mb_detect_encoding($str);
?
方法2,自定义函数。
?
1
2
3
4
5
6
7
8
9
10
11
?php
function chkbm($string){
$bm = array(‘ASCII’, ‘GBK’, ‘UTF-8′);
foreach($bm as $c){
if( $string === a href="" target="_blank" class="infotextkey"iconv/a(‘UTF-8′, $c, iconv($c, ‘UTF-8′, $string))){//转换编码后是不是相等-php显示字符串编码格式
return $c;
}
}
return null;
}
?
php 怎样判断字符串是哪种编码
php中有个函数可以用来检查当前字符串的编码类型
mb_detect_encoding($str,array('ASSCII',''GB2312','UTF-8));
PHP用MBString库的函数
$e=mb_detect_encoding($text, array('UTF-8', 'GBK'));
switch($e){
case 'UTF-8' : //如果是utf8编码
break;
case ‘GBK’: //如果是gbk编码
break
}
php如何输出中文json格式字符串
php如何输出中文json格式字符串
如何对json格式的字符串进行转换,php提供了两个函数:
json_encode 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行编码
下面看个实例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);
输出为:
["a","b","c"]
但是,当我们在数组中放入中文的时候,就会出现问题:
$arr = [ '世界', '你好',
];echo json_encode($arr);
输出的结果为:
["\u4e16\u754c","\u4f60\u597d"]
这个结果显然不是我们想要的,但是为什么出现这个呢?
因为当我们的值中包含中文时,php对他进行json编码时底层会对中文进行unicode编码,导致结果不可读,那该怎么解决呢?
方法一
可以利用 urlencode 和 urldecode 方法绕过这个转码为 unicode 的过程,先将中文字段进行urlencode,然后json_encode,最后再用urldecode处理结果,便可以正常显示中文。具体代码如下:-php显示字符串编码格式
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));
输出结果为:
["世界","你好"]
方法二
自PHP5.4版本,官方就已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。具体代码如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]
看吧,这才是我们想要的结果 :)
PHP mb_convert_encoding 获取字符串编码类型实现代码
后来又在手册上找到了is_utf8函数,这样,再结合iconv函数,我的问题就解决了。下面帖出这个函数:
复制代码
代码如下:
function
is_utf8($string)
{
return
preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E]
#
ASCII
|
[\xC2-\xDF][\x80-\xBF]
#
non-overlong
2-byte
|
\xE0[\xA0-\xBF][\x80-\xBF]
#
excluding
overlongs
|
[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
#
straight
3-byte
|
\xED[\x80-\x9F][\x80-\xBF]
#
excluding
surrogates
|
\xF0[\x90-\xBF][\x80-\xBF]{2}
#
planes
1-3
|
[\xF1-\xF3][\x80-\xBF]{3}
#
planes
4-15
|
\xF4[\x80-\x8F][\x80-\xBF]{2}
#
plane
16
)*$%xs',
$string);
}
//
function
is_utf8
如果想深入研究,建议看下PHP手册上的“Multibyte
String
Functions”这一部分的内容。
PHP中如何把一个字符串转换为utf-8编码的 ?如题 谢谢了
1、把 GBK 编码字串转换成 UTF-8 编码字串 view plaincopy to clipboardprint? ?php header("content-Type: text/html; charset=Utf-8"); echo mb_convert_encoding("你是我的好朋友","UTF-8","GBK"); ? 2、把 UTF-8 编码字串转换成 GB2312 编码字串 view plaincopy to clipboardprint? // 注意将此文件存盘成 utf-8 编码格式文件再测试 ?php header("content-Type:text/html;charset=gb2312"); echo mb_convert_encoding("你是我的好朋友","gb2312","utf-8"); ? // 注意将此文件存盘成 utf-8 编码格式文件再测试 ?php header("content-Type: text/html; charset=gb2312"); echo mb_convert_encoding("你是我的好朋友","gb312","utf-8"); ? 3、对整个页面进行转换 该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正常显示。 在php文件的头部加上下面三行代码: view plaincopy to clipboardprint? mb_internal_encoding(”gb2312″); // 这里的gb2312是你网站原来的编码 mb_http_output(”HTML-ENTITIES”); ob_start(’mb_output_handler’); mb_internal_encoding(”gb2312″); // 这里的gb2312是你网站原来的编码 mb_http_output(”HTML-ENTITIES”); ob_start(’mb_output_handler’); 使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展-php显示字符串编码格式