<?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'));
?>
分享到:
相关推荐
在IT行业中,字符编码是一个非常重要的概念,尤其是在处理多语言数据和跨平台通信时。UTF-8和GBK是两种常见..."UTF-8toGBK.vi"这个VI提供了一个实用的工具,可以帮助开发者解决在处理中文字符串时可能出现的编码问题。
这个压缩包文件"UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_源码.zip"主要涉及到两个常见的字符编码格式:UTF-8和GBK,以及如何在LabVIEW环境下进行编码转换。LabVIEW是美国国家仪器(NI)开发的一种图形化...
在这个例子中,`Encoding.GetEncoding("GBK")`获取了GBK编码器,`GetBytes()`方法将GBK编码的字符串转换为字节数组,然后`Encoding.UTF8.GetString()`将这个字节数组还原为UTF-8编码的字符串。 对于文件的编码转换...
ASCII、Unicode、GBK和UTF-8字符编码的区别联系
UTF-8编码最大的优点在于兼容ASCII,并且对于英文等拉丁语系的文字占用较少空间,因此被广泛应用于互联网传输和存储中。 #### 转换原理 在Windows操作系统中,通常使用`MultiByteToWideChar`和`...
UTF-8则是一种多字节的Unicode编码,可以表示世界上几乎所有的字符,包括中文、英文、日文等,其优点在于对ASCII字符(如英文)只用单字节表示,兼容性更强。 在C语言中,由于没有内置的GBK或UTF-8转换函数,我们...
然而,如果你从其他编码格式(如ASCII或GBK)转换到UTF-8,就需要使用编码转换函数。例如,可以使用iconv库进行这样的转换。 在处理UTF-8字符串时,常见的操作包括: 1. **字符遍历**:由于UTF-8的多字节特性,...
- `utf8_to_gbk()`函数则相反,它接受UTF-8编码的字符串,返回GBK编码的字符串。 6. **注意事项** - 转换过程中需要处理非法编码和异常情况,例如GBK编码的非标准字节序列或超出GBK范围的Unicode码点。 - 处理...
### JAVA字符编码详解:Unicode, ISO-8859-1, GBK, UTF-8 及其相互转换 #### 一、引言 在Java编程中,字符编码的管理和转换是一项基本而又重要的任务。不同的编码标准适用于不同的场景,而理解和掌握这些编码之间...
总之,C语言虽然没有内置的字符编码转换机制,但通过理解不同编码的原理和使用适当的库或API,可以实现UNICODE、GBK和UTF-8之间的转换。在进行这样的编程时,确保充分理解字符编码的细节,以及处理异常情况的方法,...
UTF-8的特点是使用1到4个字节表示一个字符,对于ASCII字符(如英文字符)只用1个字节,而对于其他语言,如中文,则需要2或3个字节。UTF-8在全球范围内被广泛接受,尤其在互联网上,因为它能良好地处理各种语言的混合...
判断字符串编码是utf-8还是gb2312 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。...本案例主要使用PHP通过对字符的ASCII码值进行判断,从而来判断字符串的编码是utf-8还是gb2312。
### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, UTF-8 编码及相互转换 在Java开发过程中,字符编码是处理文本数据的基础,不同的编码方式会影响数据的存储、传输以及显示。本文将详细介绍几种常见的字符编码...
GBK、GB2312、ISO-8859-1和UTF-8是四种常见的字符编码标准,每种都有其特定的应用场景和特点。让我们深入探讨这些编码系统以及如何进行批量转换。 首先,GBK(Great Chinese Background)是中国大陆广泛使用的字符...
类似地,`utf8_to_gbk`函数则相反,首先解析UTF-8编码的字节序列得到Unicode码点,再根据GBK编码规则转换为GBK编码的字符串。 在实际应用中,你可能需要在STM32的程序中调用这些转换函数,例如在接收网络数据时,先...
"GBK2UTF-8"是一个专门用于汉字编码转换的工具,它能够帮助用户在GBK和UTF-8之间进行转换,解决因编码不兼容导致的乱码问题。 GBK编码是中国大陆广泛采用的汉字编码标准,它是GB2312的扩展,兼容GB2312的同时增加了...
GBK和UTF-8是两种常见的字符编码格式,它们各有特点,适用于不同的场景。 GBK(Great Chinese编码)是中国大陆广泛使用的汉字编码标准,它是GB2312的扩展,兼容ASCII码。GBK编码使用双字节表示字符,最多可以表示...
1. **字符串编码理解**:首先,需要了解字符编码的基本概念,包括ASCII、GBK、UTF-8等。UTF-8是变长编码,它可以表示Unicode字符集中的所有字符,对于英文字符,UTF-8编码与ASCII编码相同,但对于中文和其他非英文...
GBK和UTF-8是两种常见的字符编码格式,它们各有特点,适应不同的应用场景。标题"GBK转UTF-8"指的是将使用GBK编码的文件或工程转换为使用UTF-8编码的过程。下面我们将深入探讨这两种编码以及转换工具的使用。 GBK...
字符编码是用来表示文本的规则,常见的有ASCII、GBK(GB2312的扩展)、UTF-8等。ASCII是一种7位编码,仅支持英文字符;GBK是基于中文的编码,包含了大量的汉字和其他语言字符;而UTF-8是一种可变长度的Unicode编码,...