UTF-8 Unicode Ansi 汉字GB2321几种编码转换程序

今天搞sxna,遇到了编码转换的难题,搞了一个多小时,历尽千辛万苦,总算总结了如下的汉字转换为各种UTF-8 Unicode Ansi编码的程序.不敢独享,特此奉献给各位编程爱好者!

--------------------------------------------------------------------------------
符合GOOGLE的UTF编码 
汉字 经过encodeURIComponent变成 %E6%B1%89%E5%AD%97

%E6%B1%89%E5%AD%97经过decodeURIComponent变成汉字

用google搜索"汉字":
http://www.google.com/search?hl=zh-CN&q=%E6%B1%89%E5%AD%97

符合BAIDU的UTF-8编码 
汉字 经过 AnsiCode 变为 %BA%BA%D7%D6

BA%BA%D7%D6 经过 DeCodeAnsi 变为 汉字

用baidu搜索"汉字":
http://www.baidu.com/baidu?word=%BA%BA%D7%D6

--------------------------------------------------------------------------------

汉字经过chinese2unicode变为汉字

汉字经过UTF2GB变为汉字

--------------------------------------------------------------------------------

test.asp 原程序如下
(下载源程序 http://www.dc9.cn/upload/test.rar


代码如下:

UTF-8 Unicode Ansi 汉字GB2321几种编码转换程序

今天搞sxna,遇到了编码转换的难题,找了一个多小时,历尽千辛万苦,总算总结了如下的汉字转换为各种UTF-8 Unicode Ansi编码的程序.不敢独享,特此奉献给各位编程爱好者!

<script language="JAVASCRIPT" runat="server">
var ss;
var dd;
ss=decodeURIComponent("%E6%B1%89%E5%AD%97");
dd=encodeURIComponent("汉字");
</script>
符合GOOGLE的UTF编码
<p>
汉字 经过encodeURIComponent变成
<%=dd%>
</p>
<p>
%E6%B1%89%E5%AD%97经过decodeURIComponent变成
<%=ss%>
</p>

<script language="vbscript" runat="server">
  Function AnsiCode(vstrIn)
    Dim i, strReturn, innerCode, ThisChr
    Dim Hight8, Low8
    strReturn = "" 
    For i = 1 To Len(vstrIn) 
      ThisChr = Mid(vStrIn,i,1) 
      If Abs(Asc(ThisChr)) < &HFF Then 
        strReturn = strReturn & ThisChr 
      Else
        innerCode = Asc(ThisChr)
        If innerCode < 0 Then
          innerCode = innerCode + &H10000
        End If
        Hight8 = (innerCode And &HFF00) \ &HFF
        Low8 = innerCode And &HFF
        strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
      End If 
    Next 
    AnsiCode = strReturn 
  End Function

Function DeCodeAnsi(s)
    Dim i, sTmp, sResult, sTmp1
    sResult = ""
    For i=1 To Len(s)
      If Mid(s,i,1)="%" Then
        sTmp = "&H" & Mid(s,i+1,2)
        If isNumeric(sTmp) Then
          If CInt(sTmp)=0 Then
            i = i + 2
          ElseIf CInt(sTmp)>0 And CInt(sTmp)<128 Then
            sResult = sResult & Chr(sTmp)
            i = i + 2
          Else
            If Mid(s,i+3,1)="%" Then
              sTmp1 = "&H" & Mid(s,i+4,2)
              If isNumeric(sTmp1) Then
                sResult = sResult & Chr(CInt(sTmp)*16*16 + CInt(sTmp1))
                i = i + 5
              End If
            Else
              sResult = sResult & Chr(sTmp)
              i = i + 2
            End If
          End If
        Else
          sResult = sResult & Mid(s,i,1)
        End If
      Else
        sResult = sResult & Mid(s,i,1)
      End If
    Next
    DeCodeAnsi = sResult
  End Function
</script>
符合BAIDU的UTF-8编码
<p>
汉字 经过 AnsiCode 变为 
<%=AnsiCode("汉字")%>
</p>
<p>
%BA%BA%D7%D6 经过 DeCodeAnsi 变为 
<%=DeCodeAnsi("%BA%BA%D7%D6 ")%>
</p>

<%
'汉字转换为UTF-8
function chinese2unicode(Str) 
  dim i 
  dim Str_one 
  dim Str_unicode 
  for i=1 to len(Str) 
    Str_one=Mid(Str,i,1) 
    Str_unicode=Str_unicode&chr(38) 
    Str_unicode=Str_unicode&chr(35) 
    Str_unicode=Str_unicode&chr(120) 
    Str_unicode=Str_unicode& Hex(ascw(Str_one)) 
    Str_unicode=Str_unicode&chr(59) 
  next 
  chinese2unicode=Str_unicode 
end function

'UTF-8 To GB2312

function UTF2GB(UTFStr)
    for Dig=1 to len(UTFStr)
        if mid(UTFStr,Dig,1)="%" then
            if len(UTFStr) >= Dig+8 then
                GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9))
                Dig=Dig+8
            else
                GBStr=GBStr & mid(UTFStr,Dig,1)
            end if
        else
            GBStr=GBStr & mid(UTFStr,Dig,1)
        end if
    next
    UTF2GB=GBStr
end function

function ConvChinese(x) 
    A=split(mid(x,2),"%")
    i=0
    j=0

for i=0 to ubound(A) 
        A(i)=c16to2(A(i))
    next

for i=0 to ubound(A)-1
        DigS=instr(A(i),"0")
        Unicode=""
        for j=1 to DigS-1
            if j=1 then 
                A(i)=right(A(i),len(A(i))-DigS)
                Unicode=Unicode & A(i)
            else
                i=i+1
                A(i)=right(A(i),len(A(i))-2)
                Unicode=Unicode & A(i) 
            end if 
        next

if len(c2to16(Unicode))=4 then
            ConvChinese=ConvChinese & chrw(int("&H" & c2to16(Unicode)))
        else
            ConvChinese=ConvChinese & chr(int("&H" & c2to16(Unicode)))
        end if
    next
end function

function c2to16(x)
    i=1
    for i=1 to len(x)  step 4 
        c2to16=c2to16 & hex(c2to10(mid(x,i,4))) 
    next
end function

function c2to10(x)
    c2to10=0
    if x="0" then exit function
    i=0
    for i= 0 to len(x) -1
        if mid(x,len(x)-i,1)="1" then c2to10=c2to10+2^(i)
    next 
end function

function c16to2(x)
    i=0
    for i=1 to len(trim(x)) 
        tempstr= c10to2(cint(int("&h" & mid(x,i,1))))
        do while len(tempstr)<4
        tempstr="0" & tempstr
        loop
        c16to2=c16to2 & tempstr
    next
end function

function c10to2(x)
    mysign=sgn(x)
    x=abs(x)
    DigS=1
    do 
        if x<2^DigS then
            exit do
        else
            DigS=DigS+1
        end if
    loop
    tempnum=x

i=0
    for i=DigS to 1 step-1
        if tempnum>=2^(i-1) then
            tempnum=tempnum-2^(i-1)
            c10to2=c10to2 & "1"   
        else
            c10to2=c10to2 & "0"
        end if
    next
    if mysign=-1 then c10to2="-" & c10to2
end function
%>
<P>汉字经过chinese2unicode变为
<%=chinese2unicode("汉字")%>(需要察看源代码,浏览器已经直接翻译)
</p>
<p>汉字经过UTF2GB变为
<%=UTF2GB("汉字")%>(需要察看源代码,浏览器已经直接翻译)

另外在网上发现了一个不错的编码转换小站
http://www.dheart.net/bmzh/index.php

(0)

相关推荐

  • Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结

    用了这么长时间,发现自己竟然不知道utf_bin和utf_general_ci这两者到底有什么区别.. ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a' 那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以. utf8_general_

  • java实现十六进制字符unicode与中英文转换示例

    关于unicode和utf的关系,可以简单的记忆:Unicode是一个编码组织.一个编码规范.在java中指utf-16:utf是Unicode编码的translation转换格式,以便于很好地在网络中传递.在存储媒介汇总保存,于是utf存在多种格式,如8.16.32,而关联le.te的区别,Unicode编码格式才会有以下过程中的10种. 复制代码 代码如下: public static void main(String[] args) throws UnsupportedEncodingEx

  • 浅析c++ 宏 #val 在unicode下的使用

    #define CHECK(condition) cout<<check failed:<<#condition<<endl; 上面这句宏,当你 CHECK(myfunc()); 时,假设myfunc返回false,会输出:check failed:myfunc() 在宏中,#condition 是把参数转换为字符串,这在打印log时,可以很方便的打印出函数名称等等 这个大家可能都知道了,太小儿科了,但是,当你在unicode下用的时候,很可能会出现乱码 解决的办法是

  • Unicode编码大揭秘

    如果你是一个生活在2003年的程序员,却不了解字符.字符集.编码和Unicode这些基础知识.那你可要小心了,要是被我抓到你,我会让你在潜水艇里剥六个月洋葱来惩罚你. 这个邪恶的恐吓是Joel Spolsky在十年前首次发出的.不幸的是,很多人认为他只是在开玩笑,因此,现在仍有许多人不能完全理解Unicode,以及Unicode.UTF-8.UTF-16之间的区别.这就是我写这篇文章的原因. 言归正传,设想在一个晴朗的下午,你收到一封电子邮件,它来自一个你高中之后就失去联系的朋友,并带有一个tx

  • 浅析内存对齐与ANSI C中struct型数据的内存布局

    这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密. 首先,至少有一点可以肯定,那就是ANSI C保证结构体中各字段在内存中出现的位置是随它们的声明顺序依次递增的,并且第一个字段的首地址等于整个结构体实例的首地址.比如有这样一个结构体: 复制代码 代码如下: struct vector{int x,y,z;} s;  int *p,*q,*r;  struct vector *ps;  p = &s.x;  q = &s.y;  r = &s.z;  ps =

  • VC中实现GB2312、BIG5、Unicode编码转换的方法

    本文主要以实例形式讨论了VC编译环境下,实现字符串和文件编码方式转换的方法,在linux下请使用Strconv来实现.具体方法如下: 一.文件编码格式转换 //GB2312 编码文件转换成 Unicode: if((file_handle = fopen(filenam,"rb")) != NULL) { //从GB2312源文件以二进制的方式读取buffer numread = fread(str_buf_pool,sizeof(char),POOL_BUFF_SIZE,file_h

  • utf8和unicode编码究竟是什么关系?有何区别?

    UTF8 == Unicode Transformation Format -- 8 bit  是Unicode传送格式.即把Unicode文件转换成BYTE的传送流. UTF8流的转换程序:  Input: unsigned integer c - the code point of the character to be encoded (输入一个unicode值)  Output: byte b1, b2,b3, b4 - the encoded sequence of bytes (输出

  • C语言中字符和字符串处理(ANSI字符和Unicode字符)

    我们知道,C语言用char数据类型表示一个8位的ANSI字符,默认在代码中声明一个字符串时,C编译器会把字符串中的字符转换成由8位char数据类型构成的一个数组: 复制代码 代码如下: // An 8-bit character char c = 'A'; // An array of 99 8-bit character and 8-bit terminating zero char szBuffer[100] = "A String"; Microsoft的C/C++编译器定义了一

  • UTF-8 Unicode Ansi 汉字GB2321几种编码转换程序

    今天搞sxna,遇到了编码转换的难题,搞了一个多小时,历尽千辛万苦,总算总结了如下的汉字转换为各种UTF-8 Unicode Ansi编码的程序.不敢独享,特此奉献给各位编程爱好者! -------------------------------------------------------------------------------- 符合GOOGLE的UTF编码  汉字 经过encodeURIComponent变成 %E6%B1%89%E5%AD%97 %E6%B1%89%E5%AD%

  • java实现汉字转unicode与汉字转16进制实例

    本文实例讲述了java实现汉字转unicode与汉字转16进制的实现方法.分享给大家供大家参考.具体实现方法如下: 一.汉字转unicode 复制代码 代码如下: public static String toUnicode(String s) {         String as[] = new String[s.length()];         String s1 = "";         for (int i = 0; i < s.length(); i++)   

  • unicode utf-8 gb18030 gb2312 gbk各种编码对比

    但是我这个的特点是追究原理,我在乎的事情都想弄明白,于是各个qq群依次发信息,没人理会.唉,郁闷.只好自己google it and teach myself .下面是详细介绍. 还有对各方求助没有人理会,我有些个人想法.现在的人已经很少有人去深究理论了,人们的观念是得过且过,人们通常只是知道什么,不知道为什么.对编程来说,个人认为这是很悲哀的事情,也是非常危险的事情.我想可能这也是中国的IT落后于美国的原因,我希望中国的编程人员能够好好想想了. 下面的东西是从网上查到的  Unicode 的编

  • python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8"转换为中文,实际上这是unicode的中文编码.可用以下方法转换: 1. >>> s = u'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8' >>> print s 人生苦短,

  • javascript url几种编码方式详解

    1. escape() 不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值.比如"春节"的返回结果是%u6625%u8282,escape()不对"+"编码主要用于汉子编码,现在已经不提倡使用了. 2. encodeURI()是javascript中真正用来对URL编码的函数.编码整个URL地址,但对特殊含义的符号";/?:@&=+$,#",也不进行编码.对应的解码函数是decodeURI(). 3. encodeU

  • js判断字符是否是汉字的两种方法小结

    有时需要判断一个字符是不是汉字,比如在用户输入含有中英文的内容时,需要判断是否超过规定长度就要用到.用 Javascript 判断通常有两种方法. 1.用正则表达式判断 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xml

  • C#判断字符是否为汉字的三种方法分享

    1.用ASCII码判断 在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下: 复制代码 代码如下: string text = "是不是汉字,ABC,柯乐义";       for (int i = 0; i < text.Length; i++)       {            if ((int)text[i] > 127)                  Console.WriteLine("是汉字");    

  • ASP+FSO生成的网页文件默认编码格式以及转换成UTF-8编码方法

    具体特征如下: 1.通过模板实现俄文正常. 2.通过后台数据库生成的静态俄文信息,后台显示正常, 前台乱码. 3.英文正常. 和该主题相关的类似或不同表达 FSO写UTF-8编码文件 FSO怎么才能生成utf-8编码的文件 FSO生成的文件默认是什么编码格式 如何转换成UTF-8编码 FSO生成静态网页的问题 ASP中用FSO生成文件代码如下 复制代码 代码如下: function createfile(sfilename,scontent) set fso=server.CreateObjec

  • 详解Python当中的字符串和编码

    字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. 由于计算机是美国人发明的,因此,最早只有1

  • ANSI,Unicode,BMP,UTF等编码概念实例讲解

    一.前言 其实从开始写Java代码以来,我遇到过无数次乱码与转码问题,比如从文本文件读入到String出现乱码,Servlet中获取HTTP请求参数出现乱码,JDBC查询到的数据乱码等等,这些问题很常见,遇到的时候随手搜一下都可以顺利解决,所以没有深入的去了解. 直到前两天同学与我谈起一个Java源文件的编码问题(这问题在最后一个实例分析),从这个问题入手拉扯出了一连串的问题,然后我们一边查资料一边讨论,直到深夜,终于在一篇博客中找到了关键性线索,解决了所有的疑惑,以前没有理解的语句都能解释清楚

随机推荐