<?php
//判断一个字符,是否ASCII
//'a'
//[0]
//ord('a') = 97
//字母..
function isCharASCII($s){
return (ord($s[0]) < 128);
}
//
//echo '<hr/>';
//var_dump(isCharASCII('a'));
//var_dump(isCharASCII('A'));
//var_dump(isCharASCII('0'));
//var_dump(isCharASCII('#'));
// echo ord('z');//122 a 97
//echo '<br>';
//$str = '国';
//var_dump($str[1]);
//echo (chr(192).chr(128));
/**
* 11100000 [UTF-8 开头]
* 128 + 64 + 32 =
* 96
* 224
* Enter description here ...
* @param unknown_type $s
*/
//????
//对于汉字GB编码第一个字节是\\
//GBK
//一个汉字 "中" 第二个字节是
//110***** 192
//10****** 128
//(有特例,比如联字)
//UTF-8编码第一个字节是1110****第二个字节是10******第三个字节是10******
//按位与出来结果要跟上面非星号相同,所以应该先判断UTF-8
//因为使用GB的掩码按位与,UTF-8的111得出来的也是110,所以要先判断UTF-8
//UTF-8
//通用...
//三个字节存一个汉字。。
//11100000 224
//10000000 128
//10000000 128
//对于英文,GB和UTF-8都是单字节的
//ASCII码小于128的值 afdfz A
//ASCII GBK UTF-8;;
function isUTF8OrGBK($s){
if((ord($s[0])&224)==224){
if((ord($s[1])&128)==128){
if((ord($s[2])&128)==128){
return 'UTF-8';
}
}
}
//128 + 64 = 192 =
if((ord($s[0])&192)==192){
if((ord($s[1])&128)==128){
return "GBK";
}
}
return NULL;
}
//=========================
//1100 0000
//c 0
//echo '<hr/>';
//var_dump(isUTF8OrGBK('a'));
//echo '<hr/>';
//var_dump(isUTF8OrGBK('中'));
//echo '<br />';
//$s = iconv("GBK", "UTF-8", '中');
//echo $s;
//var_dump(isUTF8OrGBK($s));
//$i = 1;
//$j = 1;
//$i 00000000 00000000 00000000 00000001
//$j 00000000 00000000 00000000 00000001
//---------------------------------------
// 00000000 00000000 00000000 00000001
//
//1 & 1 = 1
//0 & 1 = 0
//1 & 0 = 0;
//0 & 0 = 0
//192 128 + 64 = 192
// 193
// 224
//00000000 00000000 00000000 11000000
//00000000 00000000 00000000 11000001
//------------------------------------
//00000000 00000000 00000000 11000000
//128 + 64 + 32 = 224
//00000000 00000000 00000000 11000000
//00000000 00000000 00000000 11100000
//---------------------------------------
//00000000 00000000 00000000 11000000
//192 128
//00000000 00000000 00000000 11000000
//00000000 00000000 00000000 10000000
//=====================================
//00000000 00000000 00000000 10000000 128
//echo $i & $j;
echo '<hr/>';
function msubstr($str, $start, $len) {
$tmpstr = '';
$strlen = $start + $len;// $strlen = 2
//$str = 0;
for($i = 0; $i < $start; $i++){
if(isGBK($str[$i])){
$start++;
$strlen++;
$i++;
}
}
for($i = $start; $i < $strlen; $i++) { // 0 1
if(ord(substr($str, $i, 1)) >= 0xa0) {//0xa0 瓜
$strlen++;
$tmpstr .= substr($str, $i, 2); // $tmpstr = "西";
$i++;
} else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
function isGBK($s){
return ord(substr($s, 0, 1)) >= 0xa0;
}
//echo msubstr("西瓜cd", 0, 2).'<br/>'; //西瓜
//echo msubstr("a中cd", 0, 2).'<br/>'; //a中
//echo msubstr("中ac国人民cd", 3, 3).'<br/>'; //国人民
//echo msubstr("中中国人民cd", 3, 3).'<br/>'; //人民c
//echo msubstr("中中ac国人民cd", 3, 3).'<br/>';//c国人
//echo msubstr("中中ac国人民cd", 3, 1).'<br/>';//c
//echo msubstr("中中ac国人民cd", 3, 2).'<br/>';//c国
//echo msubstr("中ab国df人gdf民共和国cd",5,3).'<br/>';
//var_dump(isGBK('a'));
?>
分享到:
相关推荐
ASCII、Unicode、GBK和UTF-8字符编码的区别联系
本文实例讲述了C++实现判断一个字符串是否为UTF8或GBK格式的方法。分享给大家供大家参考,具体如下: 在处理外部数据的时候,很可能因为数据格式不一样而导致乱码,甚至导致某些程序挂掉。鉴于对多数系统来说,使用...
ASCII 及UTF-8 与字符互相转换
字符编码笔记:ASCII-Unicode和UTF-8 字符编码笔记:ASCII-Unicode和UTF-8 字符编码笔记:ASCII-Unicode和UTF-8
PB的utf-8转换,包括加码解码等等 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Python字符串和编码学习教程( 比特bit、ASCII编码是十进制、UTF-8、format代码学习).docx
字符串编码转换方法,字符串输出对应的ASCII编码,ISO-8859-1编码,GBK编码等编码。字符串编码转换方法,字符串输出对应的ASCII编码,ISO-8859-1编码,GBK编码等编码。字符串编码转换方法,字符串输出对应的ASCII...
ASCII_UNICODE_UTF8字符串互相转换的C++代码ASCII_UNICODE_UTF8字符串互相转换的C++代码ASCII_UNICODE_UTF8字符串互相转换的C++代码ASCII_UNICODE_UTF8字符串互相转换的C++代码ASCII_UNICODE_UTF8字符串互相转换的...
本机字符(utf-8/gbk)转换成ASCII_JS版 中文国际化资源化
介绍字符编码:ASCII,Unicode和UTF-8
今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。..............
把含有本地编码的文件转成utf-8的,经常用于java文件的转码. 把编码gbk的java文件批量转成utf-8编码的文件.
[教程]-ASCII,Unicode和UTF-8之间的区别和联系
在做Labview和tcp通讯的时候,需要发送中文字符串,找了会相关资料,竟然找到了labview提供的现成的字符串到utf8相互转换的vi,整理了一下分享出来,2014环境下目前测试可以直接使用。原文...
趣谈Unicode、Ascii、utf-8、GB2312、GBK等编码学问_.docx
想到如下特征来识别汉字: ... 如果第1位是0就不需要判断的,一定是ASCII字符。 2. 如果第1位是1开头的,第2位是0开头的,一定是GB编码。 3. 如果第1位是非1110开头的,则一定是GB编码。 4. 多做几个汉字判断。
判断字符串编码是utf-8还是gb2312 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。...本案例主要使用PHP通过对字符的ASCII码值进行判断,从而来判断字符串的编码是utf-8还是gb2312。
这是一篇写的非常好的故事,带你了解计算机字符编码的前世今生。让人记忆非常深刻,也拿来做过课堂演讲。——《一个故事带你搞懂ASCII-Unicode字符集和UTF-8编码》
UTF-8''ASCII转换工具, 支持各种字符编码。对辅助编程有极大帮助
比较方便使用的java web开发转码小助手。 说明: 1,UTF-8转ASCII,即中转英使用; 2,逆转时,直接用js可做到(本人很少用,略);