php对字符编码
A. php使用gbk字符编码时,无法映射某些字符
具体如下:
在pom.xml文件的如下内容中,添加encoding节点。
添加
B. 如何用 PHP 搞定中文字符编码问题
在PHP文件开头写上这一句:
header('Content-type:text/html; charset=utf-8'); 基本上都能解决中文字符编码问题,如果是数据库的原因,那在数据库连接的时候也要设置编码mysqli_set_charset('set names utf8');
C. PHP中哪个函数可以强制统一设置所有字符编码为指定编码
一般都是utf-8和gbk,gbk的一般没有什么问题。
utf-8最好在apache服务端就设定为utf-8。然后其他的地方,数据库、文件都设置为UTF-8,就不会有错了。
在php函数库有一个函数:iconv(),iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。
最近在做一个小偷程序,需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。 让我郁闷了好一会儿,去网上一查资料才知道这是iconv函数的一个bug。iconv在转换字符"—"到gb2312时会出错。
php编程技术:
PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。 PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。
D. PHP的字符编码17符号代替问题,怎么解决
近日,公司的论坛管理员发了一个帖子链接给我,说标题修改以后和实际的显示不一样。我打开之后发现,原始标题为:“手贱洗包浆,洗洗更健康”,但在title显示成了 “手贱洗包浆,洗洗更降”。
于是乎,在本地测试环境下进行了编辑测试未发现异常,服务器上对其它帖子也进行了编辑保存也为发现问题。
看来需要跟踪一下源代码了,发现上面的标题在执行了一下代码之后发生了变化:
1 $thread['subject'] = str_replace("【",'',$thread['subject']);
2 $thread['subject'] = str_replace("】",'',$thread['subject']);
至此,可以肯定问题出在了这里,然而到底是什么问题导致的呢,初步考虑是
1,服务器环境有问题
2,编码处理不一致
经过多个服务器环境测试后,发现问题依旧,可以排除服务器因素
。
之后测试编码处理,先将要替换的字符和查询的字符串转成UTF-8编码,之后进行替换测试发现问题不存在了。
于是修正上面的代码为:
1 $rep1 = iconv('GBK', 'UTF-8', "【");
2 $rep2 = iconv('GBK', 'UTF-8', "】");
3 $thread['subject'] = iconv('GBK', 'UTF-8', $thread['subject']);
4 $thread['subject'] = str_replace(array($rep1, $rep2),array('',''), $thread['subject']);
5 $thread['subject'] = iconv('UTF-8', 'GBK', $thread['subject']);
解决问题。
终极问题分析:
由于计算机是基于二进制代码运行的,因此php在执行替换的时候也是将非ASCII字符转成了ASCII编码之后进行查找替换,使用十六进制工具查看这些字符的二进制情况,结果如下:
【 的十六进制为 A1 BE
】
的十六进制为 A1 BF
健康的十六进制为 BD A1 BF B5
降的十六进制为 BD B5
通过以上的十六进制数据不难发现,健康的ASCII码里面正好存在】的ASCII码,于是被替换,留下了降的ASCII码。
由此可知,在字符串查找替换的时候,如果是非ASCII编码字符串很容易出现这种问题,通过转码到UTF8或者Unicode编码能否彻底的解决此问题还有待考证!
E. 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)
(注:以上问题调好后如果还有乱码
就把你的页面中文内容重新输入一遍)
F. php怎样判断字符串是什么编码
php判断字符编码的二个方法:
一个是用php自带的函数mb_detect_encoding,一个是个人写函数来处理。
方法1,使用mb_detect_encoding函数。
?
1
2
3
4
<?php
$str=”<a href="http://www..com/" 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="http://www..com/" target="_blank" class="infotextkey">iconv</a>(‘UTF-8′, $c, iconv($c, ‘UTF-8′, $string))){//转换编码后是不是相等
return $c;
}
}
return null;
}
?>
G. php 字符编码问题
做php最好是编码统一, 页面utf8, 数据库gb2312, 这样做,除了难为你自己还有别的好处吗?
如果你非要这么做, 那你必须将$name11="张三" 转成gb2312编码, 然后读取出来显示到页面的时候, 必须转成utf8, 不累的慌?
H. 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
}
I. 浅析PHP中的字符串编码转换(自动识别原编码)
本篇文章是对PHP中字符串编码转换的实现代码进行了详细的分析介绍,需要的朋友参考下
复制代码
代码如下:
/**
*
对数据进行编码转换
*
@param
array/string
$data
数组
*
@param
string
$output
转换后的编码
*/
function
array_iconv($data,$output
=
'utf-8')
{
$encode_arr
=
array('UTF-8','ASCII','GBK','GB2312','BIG5','JIS','eucjp-win','sjis-win','EUC-JP');
$encoded
=
mb_detect_encoding($data,
$encode_arr);//自动判断编码
if
(!is_array($data))
{
return
mb_convert_encoding($data,
$output,
$encoded);
}
else
{
foreach
($data
as
$key=>$val)
{
if(is_array($val))
{
$data[$key]
=
array_iconv($val,
$input,
$output);
}
else
{
$data[$key]
=
mb_convert_encoding($data,
$output,
$encoded);
}
}
return
$data;
}
}
J. php怎么设置编码
header("Content-type: text/html; charset=utf-8");
另外你的编辑器编码也要对应哦
a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。
b. 如果欲使用utf-8编码,那么php要输出头 :header(“Content-Type: text/html; charset=utf-8"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的编码格式为utf-8。
最近需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。 让我郁闷了好一会儿,去网上一查资料才知道这是iconv函数的一个bug。iconv在转换字符"—"到gb2312时会出错。解决方法很简单,就是在 需要转成的编码后加 "//IGNORE" 也就是iconv函数第二个参数后,如下:
iconv("UTF-8","GB2312//IGNORE",$data)
ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。