`
天梯梦
  • 浏览: 13747201 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

php ASCII 字符转换 (汉字及特殊字符) 宽字符 (uft8/unicode)

阅读更多

 

有点像现在流行的输入法中的特殊字符。

 


1. 英文字母或者数字转ASCII 效果如上

 

class:

 

<?
class ascii
{
    var $asciiText;
    
    function ascii($text,$style)
    {
        switch($style)
        {
           case 'graffiti': include "graffiti.font"; break;
           case 'banner': include 'banner.font'; break;
           default: include 'dos.font'; break;
        }

        $text=strtolower($text);

        for($c=0;$c<strlen($text);$c++) $symbol[$c]=explode("\n",$arr[$text[$c]]);

        for($c=0;$c<sizeof($symbol[0]);$c++):
            for($k=0;$k<strlen($text);$k++) $output.="&nbsp;".str_replace("\r","",$symbol[$k][$c]);
            $output.="\n";
        endfor;
        
        $this->asciiText=$output;
    }
}
 

实例:

 

<PRE>
<?

include_once("ascii.class.php");        // includes the class's file
$text=new ascii("justcoding","doc");          // first parameter is text that will be converted, second is the font style
print $text->asciiText;                 // asciiText is variable of converted text

?>
</PRE>
 

可以通过css控制字符大小。具体见附件。

 

2. 汉字转ASCII 效果为 “&#26143;&#26399;&#22825; ” 就是 “星期天”

 

function encode($c)
{
    $len = strlen($c);
    $a = 0;
    while ($a < $len)
    {
        $ud = 0;
        if (ord($c{$a}) >=0 && ord($c{$a})<=127)
        {
            $ud = ord($c{$a});
            $a += 1;
        }
        else if (ord($c{$a}) >=192 && ord($c{$a})<=223)
        {
            $ud = (ord($c{$a})-192)*64 + (ord($c{$a+1})-128);
            $a += 2;
        }
        else if (ord($c{$a}) >=224 && ord($c{$a})<=239)
        {
            $ud = (ord($c{$a})-224)*4096 + (ord($c{$a+1})-128)*64 + (ord($c{$a+2})-128);
            $a += 3;
        }
        else if (ord($c{$a}) >=240 && ord($c{$a})<=247)
        {
            $ud = (ord($c{$a})-240)*262144 + (ord($c{$a+1})-128)*4096 + (ord($c{$a+2})-128)*64 + (ord($c{$a+3})-128);
            $a += 4;
        }
        else if (ord($c{$a}) >=248 && ord($c{$a})<=251)
        {
            $ud = (ord($c{$a})-248)*16777216 + (ord($c{$a+1})-128)*262144 + (ord($c{$a+2})-128)*4096 + (ord($c{$a+3})-128)*64 + (ord($c{$a+4})-128);
            $a += 5;
        }
        else if (ord($c{$a}) >=252 && ord($c{$a})<=253)
        {
            $ud = (ord($c{$a})-252)*1073741824 + (ord($c{$a+1})-128)*16777216 + (ord($c{$a+2})-128)*262144 + (ord($c{$a+3})-128)*4096 + (ord($c{$a+4})-128)*64 + (ord($c{$a+5})-128);
            $a += 6;
        }
        else if (ord($c{$a}) >=254 && ord($c{$a})<=255)
        { //error
            $ud = false;
        }
        $scill .= "&#$ud;";
    }
    return $scill;
}

echo encode('日'); // &#26085; 浏览器默认会解读,所以要看源代码

 

3. utf-8 unicode 互转

 

<?
// utf8 - unicode
function utf8_unicode($c) {
   switch(strlen($c)) {
     case 1:
       return ord($c);
     case 2:
       $n = (ord($c[0]) & 0x3f) << 6;
       $n += ord($c[1]) & 0x3f;
       return $n;
     case 3:
       $n = (ord($c[0]) & 0x1f) << 12;
       $n += (ord($c[1]) & 0x3f) << 6;
       $n += ord($c[2]) & 0x3f;
       return $n;
     case 4:
       $n = (ord($c[0]) & 0x0f) << 18;
       $n += (ord($c[1]) & 0x3f) << 12;
       $n += (ord($c[2]) & 0x3f) << 6;
       $n += ord($c[3]) & 0x3f;
       return $n;
   }
}

echo utf8_unicode('以');
?>
 
<?
// unicode - utf8
function u2utf8($c) {  
	$str="";  
	if ($c < 0x80) $str.=$c;  
	else if ($c < 0x800) {  
		$str.=chr(0xC0 | $c>>6);  
		$str.=chr(0x80 | $c & 0x3F);  
	} else if ($c < 0x10000) {  
		$str.=chr(0xE0 | $c>>12);  
		$str.=chr(0x80 | $c>>6 & 0x3F);  
		$str.=chr(0x80 | $c & 0x3F);  
	} else if ($c < 0x200000) {  
		$str.=chr(0xF0 | $c>>18);  
		$str.=chr(0x80 | $c>>12 & 0x3F);  
		$str.=chr(0x80 | $c>>6 & 0x3F);  
		$str.=chr(0x80 | $c & 0x3F);  
	}
	return $str;  
}

echo u2utf8('20197');
?>
 

 

 

 

 

分享到:
评论

相关推荐

    Labview 字符串和UTF8的相互转换

    在做Labview和tcp通讯的时候,需要发送中文字符串,找了会相关资料,竟然找到了labview提供的现成的字符串到utf8相互转换的vi,整理了一下分享出来,2014环境下目前测试可以直接使用。原文...

    GBK转UTF C语言 单片机

    UTF-8的最大优点是与ASCII兼容,这意味着英文和其他使用ASCII编码的字符在UTF-8下保持不变,这使得UTF-8成为互联网上最常用的字符编码。 在Keil MDK环境下,这通常涉及到的是嵌入式开发,单片机因其资源有限,通常...

    labview utf8toGBK

    GBK包含了大部分常用汉字和一些符号,但不支持Unicode字符集中的所有字符,尤其是非中文字符。在某些老版本或特定的中文系统中,GBK编码更为常见。 在LabVIEW中,如果你的数据源使用UTF-8编码,而在系统或者程序中...

    UTF8转16进制工具 Utf8ToHex

    每个字符在UTF-8中用1到4个字节表示,其中ASCII字符(如英文字母、数字)仅用1个字节,而中文等多字节字符则用2至4个字节。例如,“你好”这两个汉字在UTF-8中分别占用3个字节,用16进制表示就是"\xE4\xBD\xA0"和"\...

    UTF8转GBK C语言 单片机

    UTF-8的优势在于对ASCII字符(英文字符)保持原样,使得它在网络传输和文件存储上具有良好的兼容性。 GBK编码,全称“汉字内码扩展规范”,是中国大陆的标准,是对GB2312编码的扩展,包含20902个汉字和其他符号,...

    UTF-8转ANSI文本文件转换器

    UTF-8的特点是前几个常用的ASCII字符(如英文字符)使用单字节编码,而其他非ASCII字符则使用2到4个字节。这种设计使得UTF-8与ASCII兼容,同时支持全球多种语言的字符。在网页、编程语言和操作系统中,UTF-8已成为...

    易语言UTF8解码

    例如,一个单字节的ASCII字符,其最高位为0;一个多字节的字符,其最高位为1,后续字节的最高两位为10。 2. **计算字符长度**:根据识别出的字节序列,确定字符的总字节数。例如,如果第一个字节的二进制表示以110...

    PB的utf-8转换

    PB的utf-8转换,包括加码解码等等 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    UTF8_TO_HEX

    而Latin1(也称为ISO-8859-1)则是一种单字节编码,主要用于西欧语言,对非ASCII字符的支持有限。 在描述中提到的“将UTF-8字符串转换为Latin1编码”,这是一个编码转换的过程。例如,中文的“世界”在UTF-8编码下...

    最全的编码问题,乱码问题,uft-8

    - **存储效率**:UTF-8对于英文等ASCII字符集来说,存储效率更高;GBK对于中文字符来说,存储效率高于UTF-8。 - **国际化支持**:UTF-8更易于实现国际化应用,而GBK则更适合单一语言的应用场景。 #### 四、编码问题...

    source insight 源码UFT8乱码转换

    **源码阅读神器Source Insight与UTF-8编码的适配及乱码问题解决方案** Source Insight是一款备受程序员喜爱的源代码阅读和编辑工具,它以其强大的语法高亮、代码跳转和实时预览等功能,极大地提高了代码阅读和分析...

    Utf-8编码与解码(vb6代码)

    UTF-8的特点是每个Unicode字符可以被编码为1到4个字节,其中ASCII字符(基本的英文字符)仅需1个字节。这使得UTF-8在处理多种语言的文本时具有很好的效率,同时也兼容了大部分早期基于ASCII的系统。 在VB6(Visual ...

    c++ UTF-8 UTF-16转换

    UTF-8是一种变长的字符编码,它使用1到4个字节来表示一个Unicode字符,其中ASCII字符(0-127)只需要1个字节。UTF-16则通常使用2个字节,对于大部分的Unicode字符,但对超出基本多文种平面(BMP)的字符,如表情符号...

    MFC UTF-8文件批量转成GB2312 解决中文乱码问题

    UTF-8是一种变长的Unicode编码,它可以表示世界上几乎所有的字符,包括中文字符,而且在ASCII字符集内与ASCII兼容。GB2312,全称为《信息技术汉字编码及交换码》,是中国大陆的简体中文字符集,主要包含常用汉字和...

    多用途编码转换工具

    它在ASCII字符集内可读,但在大多数现代应用中已被UTF-8所取代。 文件名称“UNICODE_2.00”可能指的是该编码转换工具的一个版本,特别是与Unicode相关的更新,版本号为2.00,通常意味着该软件进行了功能增强或错误...

    对ASP_UTF8_下(JS)中文乱码的解码函数

    在Web开发过程中,特别是使用ASP与JavaScript进行交互时,经常会遇到字符集转换的问题,导致中文字符显示为乱码。本文将深入探讨如何通过自定义的编码与解码函数(`bm()` 和 `jm()`)来处理ASP_UTF8环境下的中文乱码...

    php自定义函数实现汉字转换utf8编码的方法

    在PHP编程中,汉字转换为UTF-8编码是一项常见的任务,特别是在处理中文字符集时。本文将详细解析如何使用自定义函数实现这个过程,并提供两个关键函数:`htou()` 和 `utf8_unicode()`。 首先,`htou()` 函数用于将...

    用javascript实现gb2312转utf-8的脚本

    在实现gb2312到utf-8的转换时,我们需要注意 gb2312的编码范围为2121H-777EH,对于ASCII字符它也使用两字节表示。同时,我们也需要注意UNICODE是一种两字节的全编码,对于ASCII字符它也使用两字节表示。 本文提供了...

    易语言UTF8解码源码-易语言

    UTF8编码是目前最广泛使用的字符编码标准,它能表示几乎所有的Unicode字符,包括汉字。在易语言中处理UTF8编码的数据,特别是进行解码,是一项重要的技能。 易语言UTF8解码源码主要涉及以下知识点: 1. **字符编码...

Global site tag (gtag.js) - Google Analytics