`
dcj3sjt126com
  • 浏览: 1871619 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php_字符编码浅谈

    博客分类:
  • PHP
阅读更多

              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参数,所有该字符后面的字符串都无法被保存。


1.查看页面输入,内部,输出编码:

print_r(iconv_get_encoding("all"));

2.对指字符串进行编码转换:

echo iconv('utf-8','gb2312','我们');        //把‘我们’由utf8编码转换为gb2312编码

**iconv(in_charset,outcharset//TRANSLIT//IGNORE,$string);//'TRANSLIT':如果在输出的编码格式中不含有的字符,可以在类似编码中查找取代;'IGNORE':如果输出格式编码中不含有字符串中的某字符时,能够跳过进行后面字符的编码。否则在转码失败处会中断输出,产生错误。

3.将字符串进行编码转换(可自动判断编码类型,但听说效率没有iconv好

mb_convert_encoding(‘我们’, 'utf-8','gb2312' );  //将‘我们’由gb2312转换为utf8

mb_convert_encoding(‘我们’, 'utf-8');       //将‘我们’转换成utf8编码格式


$str = mb_convert_encoding($str"EUC-JP""auto");


$str mb_convert_encoding($str"UCS-2LE""JIS, eucjp-win, sjis-win");

**第三个参数还可以是array()形式

4.设置编码格式:

iconv_set_encoding("internal_encoding""UTF-8");   //设置内部编码为utf8
iconv_set_encoding("output_encoding""ISO-8859-1"); //设置输出编码为ISO-8859-1

设置选项:1.input_encoding 2.output_encoding 3.internal_encoding

**ISO-8859-1编码是单字节编码,向下兼容ASCII, Latin1是ISO-8859-1的别名

5.查看字符串编码方式:

格式:string mb_detect_encoding(string$str[,mixed$encoding_list= mb_detect_order()[,bool$strict= false]] )

$str='编码方式';

echo mb_detect_encoding($str);  //:UTF-8


echo mb_detect_encoding($str"auto");


echo mb_detect_encoding($str"JIS, eucjp-win, sjis-win");


$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
echo 
mb_detect_encoding($str$ary);

6.查看文件编码方式:

$file = 'text3.txt';
echo getFileEncoding(file_get_contents($file));  // 输出UTF-16LE

7.判断字符串是否符合指定格式编码:

格式:bool mb_check_encoding([string$var=NULL[,string$encoding= mb_internal_encoding()]] )

$string="\x00\x81";
$encoding="Shift_JIS";

mb_check_encoding($string,$encoding)   //:true

8.单个或多个变量的字符编码转换

格式:stringmb_convert_variables(string$to_encoding,mixed$from_encoding,mixed&$vars[,mixed&$...] )

**$from_encoding:可以是数字形式,用逗号分隔字符串或结构体形式。

$str1= '测试编码';$str21= '测试编码2';

$inputenc = mb_convert_variables("UTF-8", "UTF-8,GBK,GB2312", $str1, $str2);

var_dump($inputenc);    //: string(5) "UTF-8"
var_dump($str1);      //: string(12) "测试编码"


**CP936是GBK

  • 大小: 5.4 KB
  • 大小: 3.9 KB
分享到:
评论

相关推荐

    浅谈PHP中RAR压缩文件的处理.pdf

    "浅谈PHP中RAR压缩文件的处理" php是当前web开发中最流行的编程语言之一,而RAR压缩文件是常见的一种压缩格式。在web应用中,为了提高效率,上传的文件大多数都是以压缩包的形式存在的,因此如何在php中实现RAR...

    PHP小马免杀的浅谈[过最新D盾]1

    例如,使用`~urldecode()`函数来解码字符串,这可能使恶意代码更难被检测到。 2. 改变HTTP请求类型,将GET请求改为POST请求,以避免某些基于请求类型的检测。 **方法二:防止被识别为可疑的`eval`** `eval`函数在...

    浅谈php字符串反转 面试中经常遇到

    以下是关于PHP字符串反转的详细知识点。 首先,对于单字节字符集的字符串(如英文),PHP提供了一个内置函数strrev()用于实现反转。单字节字符集指的是每个字符占用一个字节,比如ASCII字符集。使用strrev()函数...

    浅谈PHP值mysql操作类

    在类的构造函数中,我们通过 `mysqli` 函数进行数据库连接,并设置字符编码为UTF8。如果连接失败,会输出错误信息并退出程序。 接着,我们实现了一些辅助方法。`tbField()` 方法用于获取表的所有字段,通过执行 `...

    浅谈php和js中json的编码和解码

    json_encode() 函数用于将PHP变量编码为JSON格式的字符串。它的基本语法是: ```php json_encodePHP( mixed $value [, int $options = 0 [, int &$depth ]] ) ``` 这个函数可以处理不同类型的数据,如数组、对象和...

    浅谈php中urlencode与rawurlencode的区别

    下面是一个具体的ASCII字符编码比较: ```php for ($i = 0x20; $i ; $i++) { $str .= dechex($i); } $ascii = pack("H*", $str); echo "所有的可打印的ASCII字符:(从空格到~)\n" . $ascii . "\n"; // 省略的...

    浅谈PHP中foreach/in_array的使用

    文章中提到了实际编码中遇到的问题,例如在输出列表时,如果不注意在循环中修改了数组,就可能导致输出最后一行数据时出现乱码或空值。这提示我们在使用foreach进行循环输出时,一定要留意变量的作用域和生命周期,...

    浅谈php中fopen不能创建中文文件名文件的问题

    在PHP编程中,有时会遇到使用fopen函数创建带有中文字符的文件名时出现乱码的问题。这主要是由于编码不匹配导致的。...在编写代码时,应注重字符编码的处理,确保在不同环境下的兼容性,这样才能避免类似问题的发生。

    浅谈php调用python文件

    在Windows系统中,由于操作系统对传输信息进行的再编码,导致从PHP向Python传输的字符串发生了编码上的变化。这种编码问题在不同的操作系统(如Linux和Windows)中可能有不同的表现,因此在设计跨平台应用时需要特别...

    浅谈php://filter的妙用

    在处理XXE时,`php://filter`经常用于编码和转换文件内容,以防止解析错误。例如,当我们尝试读取包含PHP代码的文件时,可能会因为PHP标签与XML解析冲突而导致错误。这时,我们可以使用`php://filter`对文件内容进行...

    浅谈PHP中JSON数据操作

    通常情况下,json_encode函数能够处理包括数字、字符串、布尔值、null以及数组和对象在内的大多数PHP变量类型。 例如: ```php $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 'Hello', 'PHP'); $jsonString = json_...

    浅谈json_encode用法

    这里使用了json_encode函数,它接受PHP数组或对象作为参数,并返回一个JSON编码的字符串。在例子中,将两个数组封装成一个二维数组$data_arr,然后使用json_encode函数进行编码。这种转换是Web开发中非常常见的一种...

    浅谈开启magic_quote_gpc后的sql注入攻击与防范

    8. **使用ORM(对象关系映射)框架**:许多现代的PHP框架如Laravel和Symfony提供了内置的防止SQL注入的机制,使用这些框架可以简化安全编码。 总结来说,虽然`magic_quotes_gpc`曾经提供了一定程度的保护,但它并不...

    浅谈网站SQL注入攻击防护策略研究.pdf

    8. **安全编码实践**:遵循OWASP(开放网络应用安全项目)的建议,采用安全的编程实践。 ### 数据处理的最佳实践 1. **使用存储过程**:存储过程可以提高性能,并且可以在服务器端进行更严密的控制和验证。 2. **...

    浅谈PHP正则表达式中修饰符/i, /is, /s, /isU

    此修饰符允许模式字符串被当作UTF-8编码处理。这对于处理包含多字节字符的字符串特别有用,比如国际化的应用中常见的Unicode字符。 修饰符的使用,可以极大地增强正则表达式的表达力和灵活性。例如,修饰符/i和/s...

    浅谈htmlentities 、htmlspecialchars、addslashes的使用方法

    在PHP编程中,处理字符串和数据安全是至关重要的任务,特别是在HTML上下文中。本文将深入探讨四个常用的字符串处理函数:html_entity_decode()、htmlentities()、addslashes()和htmlspecialchars(),以及它们在防止...

    浅谈Mysql如何处理表情,MySql如何存储表情

    4. 最后,确保应用程序连接MySQL时也使用utf8mb4编码,例如在Java或PHP的数据库连接字符串中指定字符集。 需要注意的是,切换到utf8mb4可能会增加存储空间的需求,因为每个字符可能需要更多的字节。此外,如果你的...

    浅谈php安全性需要注意的几点事项

    2. 避免使用`eval`函数:`eval`会将字符串当作PHP代码执行,这非常危险,因为攻击者可以利用它执行任意代码。除非有严格的控制和验证机制,否则应避免使用。 3. 使用安全的会话管理:正确配置和管理PHP会话,确保...

    浅谈PHP表单提交(POST&GET&URL编/解码)

    在使用POST和GET方法时,开发者还需要注意数据在不同服务器和浏览器之间的兼容性问题,以及在表单中正确设置字符编码,比如UTF-8,以确保数据的正确显示和处理。 最后,关于文章中提到的“小编觉得挺不错的”,可以...

Global site tag (gtag.js) - Google Analytics