胖智机器的人在chicco智高什么档次次?

2004年6月 VB大版内专家分月排行榜第二2004年5月 VB大版内专家分月排行榜第二
2007年5月 VB大版内专家分月排行榜第一2007年4月 VB大版内专家分月排行榜第一2005年12月 VB大版内专家分月排行榜第一2004年2月 VB大版内专家分月排行榜第一2004年1月 VB大版内专家分月排行榜第一2003年11月 VB大版内专家分月排行榜第一2003年10月 VB大版内专家分月排行榜第一
2007年6月 VB大版内专家分月排行榜第二2006年3月 VB大版内专家分月排行榜第二2006年2月 VB大版内专家分月排行榜第二2006年1月 VB大版内专家分月排行榜第二2004年9月 VB大版内专家分月排行榜第二2004年8月 VB大版内专家分月排行榜第二2004年3月 VB大版内专家分月排行榜第二2003年12月 VB大版内专家分月排行榜第二2003年9月 VB大版内专家分月排行榜第二2003年7月 VB大版内专家分月排行榜第二2003年6月 VB大版内专家分月排行榜第二2003年5月 VB大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。> url 编码转换(utf8 - gb2312)
url 编码转换(utf8 - gb2312)
相关推荐:在请求网络图片时用到了中文的url,比如”/你好.jpg”,直接使用上述url进行网络请求是没法得到结果的,需要对其进行UTF8编码。之前可以采用以下方式进行编码。NSString *str = @&/你好.jpg&;NSString *result
最近在做一个程序时遇到.net页面和asp页面互相访问的情况,.net页面默认的编友格式都是utf-8的,而asp页面中全部都用的是ANSI(GB2312),在.net页面中点击指向asp页面的链接时,由于编码问题,在传递的参数中的汉字,在asp页面中无法读取。最后找到这段代码搞定,把这段代码嵌入每一个要接受汉字参数的asp页面中即可。相关推荐:&php$c = 45210;//范围即0x4e00 - 0x9fa5//for($ls=$c=19968;$c&=40869;$c++) { $utf8char = chr(0xE0 | $c && 0x0C).chr(0x80 | $c && 0x06 & 0x3F).chr(0x80 | $c & 0x3F);echo $utf8//}$char = '阿';echo ord($char{0}) . ord($char
if(Request.ServerVariables(&QUERY_STRING&)&&&& and InStr(Request.ServerVariables(&QUERY_STRING&),&=%&)&&0) then
&&& '对参数进行utf-8到gb2312的转码
&'将转码后得到的url进行重定向,这样参数的编码即为gb2312,可以和oa中的程序良好的交互
&response.redirect Url
' 汉字转换为UTF-8
function&chinese2unicode(Str)&
&&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 )&
&&chinese2unicode = Str_unicode&
end&function&&
' UTF-8&To&GB2312
function&UTF2GB(UTFStr)
&&&& for &Dig = 1 &to&len(UTFStr)
&&&&&&&& if &mid(UTFStr,Dig, 1 ) = & % & &then
&&&&&&&&&&&& ' 若为空格,则仅对空格作处理(3位)
&&&&&&&&&&&& if &mid(UTFStr,Dig, 3 )& = & & %20 & &then
&&&&&&&&&&&&&&&&GBStr = GBStr& & &ConvChinese(mid(UTFStr,Dig, 3 ))
&&&&&&&&&&&&&&&&Dig = Dig + 2
&&&&&&&&&&&& ' 若不为空格,而且剩余的utf-8字符串长度大于或等于8,则取汉字(9位)
&&&&&&&&&&&&elseif&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
&&&&UTF2GB = GBStr
end&function&
function&ConvChinese(x)&
&&&&A = split(mid(x, 2 ), & % & )
&&&& for &i = 0 &to&ubound(A)&
&&&&&&&&A(i) = c16to2(A(i))
&&&& 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
&&&&&&&& ' response.write&&a&&Unicode&&a&
&&&&&&&&&&& ' response.write&len(c2to16(Unicode))
&&&&&&&& ' &&&&response.end
&&&&&&&&&&&&ConvChinese = ConvChinese& & &chr( int ( & &H & & & &c2to16(Unicode)))
&&&&&&&&end& if
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
&&&& for &i = & 0 &to&len(x)& - 1
&&&&&&&& if &mid(x,len(x) - i, 1 ) = & 1 & &then&c2to10 = c2to10 + 2 ^ (i)
end&function
function&c16to2(x)
&&&& 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
end&function
function&c10to2(x)
&&&&mysign = sgn(x)
&&&&x = abs(x)
&&&&DigS = 1
&&&&&&&& if &x & 2 ^ DigS&then
&&&&&&&&&&&&exit& do
&&&&&&&& else
&&&&&&&&&&&&DigS = DigS + 1
&&&&&&&&end& if
&&&&tempnum = x
&&&& 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
&&&& if &mysign =- 1 &then&c10to2 = & - & & & &c10to2
end&function
最近在做一个程序时遇到.net页面和asp页面互相访问的情况,.net页面默认的编友格式都是utf-8的,而asp页面中全部都用的是ANSI(GB2312),在.net页面中点击指向asp页面的链接时,由于编码问题,在...
------分隔线----------------------------
相关阅读排行
相关最新文章
Copyright 2012- ( Coin163 ) All Rights Reserved &&Python2.x中str与unicode相关问题的解决方法
作者:PulpCode
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Python2.x中str与Unicode相关问题的解决方法,Python2.x版本中由于没有默认使用Unicode而会在实际使用中碰到一些字符问题,针对这些问题本文讨论了一些解决方法,需要的朋友可以参考下
python2.x中处理中文,是一件头疼的事情。网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自己总结一篇文章。
我也会在以后学习中,不断的修改此篇博客。
这里假设读者已有与编码相关的基础知识,本文不再再次介绍,包括什么是utf-8,什么是unicode,它们之间有什么关系。
str与字节码
首先,我们完全不谈unicode。
s = "人生苦短"
s是个字符串,它本身存储的就是字节码。那么这个字节码是什么格式的?
如果这段代码是在解释器上输入的,那么这个s的格式就是解释器的编码格式,对于windows的cmd而言,就是gbk。
如果将段代码是保存后才执行的,比如存储为utf-8,那么在解释器载入这段程序的时候,就会将s初始化为utf-8编码。
unicode与str
我们知道unicode是一种编码标准,具体的实现标准可能是utf-8,utf-16,gbk ……
python 在内部使用两个字节来存储一个unicode,使用unicode对象而不是str的好处,就是unicode方便于跨平台。
你可以用如下两种方式定义一个unicode:
s1 = u"人生苦短"
s2 = unicode("人生苦短", "utf-8")
encode与decode
在python中的编码解码是这样的:
所以我们可以写这样的代码:
# -*- coding:utf-8 -*-
su = "人生苦短"
# : su是一个utf-8格式的字节串
u = s.decode("utf-8")
# : s被解码为unicode对象,赋给u
sg = u.encode("gbk")
# : u被编码为gbk格式的字节串,赋给sg
但是事实情况要比这个复杂,比如看如下代码:
s = "人生苦短"
s.encode('gbk')
看!str也能编码,(事实上unicode对象也能解码,但是意义不大)
这样为什么可以?看上图的编码流程的箭头,你就能想到原理,当对str进行编码时,会先用默认编码将自己解码为unicode,然后在将unicode编码为你指定编码。
这就引出了python2.x中在处理中文时,大多数出现错误的原因所在:python的默认编码,defaultencoding是ascii
看这个例子:
# -*- coding: utf-8 -*-
s = "人生苦短"
s.encode('gbk')
上面的代码会报错,错误信息:UnicodeDecodeError: ‘ascii' codec can't decode byte ……
因为你没有指定defaultencoding,所以它其实在做这样的事情:
# -*- coding: utf-8 -*-
s = "人生苦短"
s.decode('ascii').encode('gbk')
设置defaultencoding
设置defaultencoding的代码如下:
reload(sys)
sys.setdefaultencoding('utf-8')
如果你在python中进行编码和解码的时候,不指定编码方式,那么python就会使用defaultencoding。
比如上一节例子中将str编码为另一种格式,就会使用defaultencoding。
s.encode("utf-8") 等价于 s.decode(defaultencoding).encode("utf-8")
再比如你使用str创建unicode对象时,如果不说明这个str的编码格式,那么程序也会使用defaultencoding。
u = unicode("人生苦短") 等价于 u = unicode("人生苦短",defaultencoding)
默认的defaultcoding:ascii是许多错误的原因,所以早早的设置defaultencoding是一个好习惯。
文件头声明编码的作用。
这要感谢这篇博客关于python文件头部分知识的讲解。
顶部的:# -*- coding: utf-8 -*-目前看来有三个作用。
&&& 如果代码中有中文注释,就需要此声明
&&& 比较高级的编辑器(比如我的emacs),会根据头部声明,将此作为代码文件的格式。
&&& 程序会通过头部声明,解码初始化 u”人生苦短”,这样的unicode对象,(所以头部声明和代码的存储格式要一致)
关于requests库
requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。
其中的Request对象在访问服务器后会返回一个Response对象,这个对象将返回的Http响应字节码保存到content属性中。
但是如果你访问另一个属性text时,会返回一个unicode对象,乱码问题就会常常发成在这里。
因为Response对象会通过另一个属性encoding来将字节码编码成unicode,而这个encoding属性居然是responses自己猜出来的。
官方文档:
&&& Content of the response, in unicode.
&&& If Response.encoding is None, encoding will be guessed using chardet.
&&& The encoding of the response content is determined based solely on HTTP headers, following RFC 2616 to the letter. If you can take advantage of non-HTTP knowledge to make a better guess at the encoding, you should set r.encoding appropriately before accessing this property.
所以要么你直接使用content(字节码),要么记得把encoding设置正确,比如我获取了一段gbk编码的网页,就需要以下方法才能得到正确的unicode。
import requests
url = "http://xxx.xxx.xxx"
response = requests.get(url)
response.encoding = 'gbk'
print response.text
不仅仅要原理,更要使用方法!
如果是早期的我写博客,那么我一定会写这样的例子:
如果现在的文件编码为gbk,然后文件头为:# -*- coding: utf-8 -*-,再将默认编码设置为xxx,那么如下程序的结果会是……
这就类似于,当年学c的时候,用各种优先级,结合性,指针来展示自己水平的代码。
实际上这些根本就不实用,谁会在真正的工作中写这样的代码呢?我在这里想谈谈实用的处理中文的python方法。
主动设置defaultencoding。(默认的是ascii)
代码文件的保存格式要与文件头部的# coding:xxx一致
如果是中文,程序内部尽量使用unicode,而不用str
你在打印str的时候,实际就是直接将字节流发送给shell。如果你的字节流编码格式与shell的编码格式不相同,就会乱码。
而你在打印unicode的时候,系统自动将其编码为shell的编码格式,是不会出现乱码的。
程序内外要统一
如果说程序内部要保证只用unicode,那么在从外部读如字节流的时候,一定要将这些字节流转化为unicode,在后面的代码中去处理unicode,而不是str。
with open("test") as f:
for i in f:
# 将读入的utf-8字节流进行解码
u = i.decode('utf-8')
如果把连接程序内外的这段数据流比喻成通道的的话,那么与其将通道开为字节流,读入后进行解码,不如直接将通道开为unicode的。
# 使用codecs直接开unicode通道
file = codecs.open("test", "r", "utf-8")
for i in file:
print type(i)
# i的类型是unicode的
所以python处理中文编码问题的关键是你要清晰的明白,自己在干什么,打算读入什么格式的编码,声明的的这些字节是什么格式的,str到unicode是如何转换的,str的一种编码到另一种编码又是如何进行的。 还有,你不能把问题变得混乱,要自己主动去维护一种统一。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Unicode与中文互转|16进制Unicode编码在线转换|反斜杠u(\u)编码|Java转义字符还原-站长工具
当前位置:--Unicode与中文互转(反斜杠u(\u)开头的16进制Unicode编码转换成中文汉字)
Unicode与中文互转 16进制Unicode编码转换、还原
Unicode转中文/中文转Unicode/Java转义字符还原
  PS:本工具可以把中文、英文字母、标点符号、特殊特号等字符串转换成以反斜杠u(\u)开头的16进制Unicode编码,反之还原。
请把你需要转换的任意字符串粘贴在下面的文本域中!
不转换字母、数字等,只转换中文。
这里显示转换后的结果。
本站部分内容收集整理于网络,如有问题请随时联系站长,本站将在第一时间内进行处理!
&&蜀ICP备号-1&&最佳浏览环境:IE7.0及以上 1024px×768px

我要回帖

更多关于 奇智机器人 的文章

 

随机推荐