PHP学习笔记之字符串编码的转换和判断
iconv('GBK', 'UTF-8//IGNORE', '我们'); // 将字符串由 GBK 编码转换为 UTF-8 编码
但 iconv 只能解决编码预先知道的情况,如果字符串编码未知,则需要先探测其编码,这时可能会用到 mb_string 扩展库:
mb_detect_encoding('我们');
可是 mb_detect_encoding 存在一个硬伤,经常出现判断不准确的情况。或许这样就可以解决:
// 使用 iconv 转换并判断是否等值,效率不高
function is_utf8 ($str) {
if ($str === iconv('UTF-8', 'UTF-8//IGNORE', $str)) {
return 'UTF-8';
}
}
// 多种编码的情况
function detect_encoding ($str) {
foreach (array('GBK', 'UTF-8') as $v) {
if ($str === iconv($v, $v . '//IGNORE', $str)) {
return $v;
}
}
}
通过以上方式得到字符串编码信息后,就可以利用 iconv 或 mb_convert_encoding 来转换编码了。
相关推荐
-
php自动获取字符串编码函数mb_detect_encoding
当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF- 8,或者UTF-8和GBK(这里主要是对于cp936的判断),网上说是由于字符短是,mb_detect_encoding会出现误判. 例如: 复制代码 代码如下: $encode = mb_detect_encoding($keytitle, array("ASCII",'UTF-8′,"GB2312′,"GBK",'B
-
PHP 字符串编码截取函数(兼容utf-8和gb2312)
复制代码 代码如下: //截取字符串长度.支持utf-8和gb2312编码.若为gb2312,先将其转为utf-8,在utf-8的基础上截取然后再转换回来 function cut_string($str,$from=1,$length=10,$code='utf-8',$rear='...'){ if($code!='utf-8'){//总是将字符串转为utf-8编码 $str=iconv($code,'utf-8',$str); } $str_len=
-
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 | [
-
浅析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'); $enc
-
php 判断字符串编码是utf-8 或gb2312实例
php 判断字符串编码是utf-8 或gb2312 第一种方法: function is_gb2312($str) { for($i=0; $i<strlen($str); $i++) { $v = ord( $str[$i] ); if( $v > 127) { if( ($v >= 228) && ($v <= 233) ) { if( ($i+2) >= (strlen($str) - 1)) return true; // not enough cha
-
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
iconv - Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5) mb_convert_encoding - Convert character encoding(PHP 4 >= 4.0.6, PHP 5) 用法: string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] ) 需要先启用 mbs
-
PHP学习笔记之字符串编码的转换和判断
复制代码 代码如下: iconv('GBK', 'UTF-8//IGNORE', '我们'); // 将字符串由 GBK 编码转换为 UTF-8 编码 但 iconv 只能解决编码预先知道的情况,如果字符串编码未知,则需要先探测其编码,这时可能会用到 mb_string 扩展库: 复制代码 代码如下: mb_detect_encoding('我们'); 可是 mb_detect_encoding 存在一个硬伤,经常出现判断不准确的情况.或许这样就可以解决: 复制代码 代码如下: // 使用 ic
-
Python学习笔记之字符串和字符串方法实例详解
本文实例讲述了Python学习笔记之字符串和字符串方法.分享给大家供大家参考,具体如下: 字符串 在 python 中,字符串的变量类型显示为 str.你可以使用双引号 " 或单引号 ' 定义字符串 定义字符串 my_string = 'this is a string!' my_string2 = "this is also a string!!!" # Also , we can use backslash '/' to escape quotes. this_strin
-
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
本文实例讲述了ES6学习笔记之字符串.数组.对象.函数新增知识点.分享给大家供大家参考,具体如下: 1.模板字符串 反引号`` 内用于输入格式化的字符串文本,在``内可以将表达式用${}包含起来 let str=` <!DOCTYPE html> <html lang="en"> <body> <div> <p class="pClass">格式化字符串</p> </div> <
-
C语言学习笔记之字符串间的那些事
目录 字符串表示方式 #strlen #strcpy和strncpy ##strcpy ##strcnpy #strcat和strncat ##strcat ##strncat #strcmp和strncmp ##strcmp ##strncmp #题目 总结 字符串表示方式 字符串常量 用双引号括起来的内容称为字符串常量,例如:"Hello, World!"为一个字符串常量.双引号中的字符和编译器自动加入末尾的\0字符,都作为字符串存储在内存中. 字符串常量属于静态存储类别.当在函数
-
php学习笔记之字符串常见操作总结
本文实例讲述了php字符串常见操作.分享给大家供大家参考,具体如下: 字符串的定义 可以用单引号或双引号来定义字符串 <?php $str = "hello"; $str = 'hello'; >? heredoc和nowdoc定义大段字符串 区别:和单引号与双引号定义字符串的区别相同 <?php //heredoc的使用 $str3 = <<<MARK hello world! ok;$a puzhong! MARK; echo $str3.&qu
-
ios学习笔记之基础数据类型的转换
前言 前几天在做一些小功能的时候,忽然发现有的基础数据转换都忘记了,于是赶紧整理下记下来!方便自己以后查阅,也给有需要的朋友们一些参考,下面话不多说,来看详细的内容. 一.NSString 字符串拼接: NSString *string = [NSString stringWithFormat:@"%@%@",对象,对象]; 字符串与int int intString = [newString intValue]; NSString *string = [NSString string
-
JavaScript 学习笔记二 字符串拼接
var str="hello"; str+="world"; 实际上,这段代码在幕后执行的步骤如下: (1) 创建存储"hello"的字符串. (2) 创建存储"world"的字符串. (3) 创建存储连接结果的字符串. (4) 把str的当前内容复制到结果中. (5) 把"world"复制到结果中. (6) 更新str,使它指向结果. 每次完成字符串连接都会执行步骤2到6,使得这种操作非常消耗资源.如果重
-
java学习笔记_关于字符串概述
一.String类 String类代表字符串,是由字符构成的一个序列.创建String对象的方法很简单,有以下几种: 1)用new来创建: String s1 = new String("my name is tongye"); 2) 不用new直接创建: String s2 = "my name is tongye"; 3) 可以用字符数组来创建一个字符串: char[] c = {'t','o','n','g','y','e'}; String s3 = new
-
JavaScript中字符串与Unicode编码互相转换的实现方法
本文实例讲述了JavaScript中字符串与Unicode编码互相转换的实现方法.分享给大家供大家参考,具体如下: 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 // 实际编程中请避免 // 字符串 str = "中文"; // 获取字符 char0 = str.charAt(0); // "中" // 数字编码值 code = str.charCodeAt(0); // 20013
-
python字符串与url编码的转换实例
主要应用的场景 爬虫生成带搜索词语的网址 1.字符串转为url编码 import urllib poet_name = "李白" url_code_name = urllib.quote(poet_name) print url_code_name #输出 #%E6%9D%8E%E7%99%BD 2.url编码转为字符串 import urllib url_code_name = "%E6%9D%8E%E7%99%BD" name = urllib.unquote(
随机推荐
- 解决360检测出文件目录列表显示漏洞的方法
- javascript 节点排序 2
- 原生JS封装Ajax插件(同域、jsonp跨域)
- PHP实现文件下载【实例分享】
- 深入理解PHP中的static和yield关键字
- js 开发之autocomplete="off"在chrom中失效的解决办法
- python文件和目录操作函数小结
- 在Linux下搭建Git服务器的方法详解
- C++针对bmp格式解析实例
- 安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
- rsa加密算法使用示例分享
- javascript父子页面通讯实例详解
- 典型入侵日志分析
- Struts2 的国际化实现方式示例
- 最火爆的3G超大免费空间 免费全能空间申请
- Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
- DataGridView右键菜单自定义显示及隐藏列功能
- 关于JDBC与MySQL临时表空间的深入解析
- python3实现磁盘空间监控
- Java Property类使用详解