编码转换

Python中解码decode()与编码encode()与错误处理UnicodeDecodeError: 'gbk' codec can't decode byte 0xab

半腔热情 提交于 2020-04-02 09:24:54
编码方法encoding( ) 描述   encode() 方法以指定的编码格式编码字符串,默认编码为 'utf-8'。将字符串由string类型变成bytes类型。   对应的解码方法: bytes decode() 方法。 语法   str.encode([encoding = 'utf-8' ][,errors = 'strict' ]) str是表示需要编码的字符串,并且是个string类型。 encoding -- 可选参数,要使用的编码方案,默认编码为 'utf-8'。 errors -- 可选参数,设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。 返回值   该方法返回编码后的字符串,它是一个 bytes 对象,这个字节对象是用于下面的解码用的。 官方文档解释:    str. encode ( encoding="utf-8" , errors="strict" )   Return an encoded version of the string as a bytes object. Default

winCE下Unicode编码

吃可爱长大的小学妹 提交于 2020-04-01 04:47:32
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址 BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值 3. 为什么要使用Unicode? (1) 可以很容易地在不同语言之间进行数据交换。 (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。 Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成 Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串

Unicode字符集和多字节字符集

拜拜、爱过 提交于 2020-04-01 04:23:52
在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号例如制表符。 后来,由于各国语言的加入,ASCII已经不能满足信息交流的需要,因此,为了能够表示其它国家的文字,各国在ASCII的基础上制定了自己的字符集,这些从ANSI标准派生的字符集被习惯的统称为ANSI字符集,它们正式的名称应该是MBCS(Multi-Byte Chactacter System,即多字节字符系统)。这些派生字符集的特点是以ASCII 127 bits为基础,兼容ASCII 127,他们使用大于128的编码作为一个Leading Byte,紧跟在Leading Byte后的第二(甚至第三)个字符与Leading Byte一起作为实际的编码。这样的字符集有很多,我们常见的GB-2312就是其中之一。 例如在GB-2312字符集中,“连通”的编码为C1 AC CD A8,其中C1和CD就是Leading Byte

宽字符,Ansic和Unicode

≯℡__Kan透↙ 提交于 2020-04-01 04:23:15
电脑发展的初期,只是在美国等英文国家使用,英文只有26个字母和其它字符,一个字节最多可以表示256个字符,如字母“A”用0x41(二进制01000001)表示,字母“a”用0x61(二进制01100001)表示。为了使各家电脑公司生产的电脑统一,美国搞了个国家标准ANSI,一直沿用至今,我们今天用的电脑普通情况下使用的都ANSI编码。 ANSI编码,每个字符占一个字节,但最多只能表示256个字符。 汉字等东亚语言字符怎么办呢?于是采用两个字节共同表示一个汉字的方法。二个字节理论上可以表示65535个字符。 因为ANSI标准是用一个字节的7个位表示一个普通字符,最高位为0(如字母“A”的二进制01000001),所以表示汉字就采用最高位为1来表示。如“中”字就是用0xD6、0xD0表示(二进制11010110、11010000)。 程序员判断一个字符是否为汉字,就是通过最高位是否为1来判断的。 但是,中国大陆的汉字表示方法叫GB码(中国国家标准,如GB2312),中国台湾、香港的汉字表示方法叫BIG5码(大五码,台湾一家民营公司提出),还有韩、日等字符,还是造成了计算机文字表示的不统一。 所以,在W98时代,电脑上网、收发邮件等经常出现乱码的现象(就是文字标准不统一造成的) ANSI编码字符,叫多字节字符 UNICODE编码,每个字符占二个字节。也叫万国码(一种国际标准字符集

Windows编程 Windows下Unicode编码

╄→尐↘猪︶ㄣ 提交于 2020-04-01 04:19:56
我们知道在ascii编码,每个字符占用一个字节,这样能够表示的字符数远远不够表示世界所有语言的符号,所以Unicode编码就是出现了,当然Unicode也有8位 16位 32位的编码,UTF-8、UTF-16、UTF-32分别以char、char16_t、char32_t作为编码单位,本文讨论16位 即UTF-16,(注: char16_t 和 char32_t 是 C++ 11 标准新增的关键字。如果你的编译器不支持 C++ 11 标准,请改用 unsigned short 和 unsigned long。) 当然本文着重讨论Unicode在Windows中的应用,至于具体细节以及原理上的东西,本人才疏学浅,不配在此谈论此问题,呵呵。还请各位到Google去寻找大牛吧。。由于个人能力有限,文中难免有错误之处,还请各位多多批评和指正,多多包涵才是。 许久以前我在学习MFC的过程中,用GetDlgItemText获取Edit Control的值,其得到的值是CString,我们看下该函数的原型: int GetDlgItemText( HWND hDlg , int nID, LPTSTR lpStr, int nMaxCount) const; int GetDlgItemText( int nID, CString& rString) const;

winCE下Unicode编码

最后都变了- 提交于 2020-04-01 04:14:30
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址 BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值 3. 为什么要使用Unicode? (1) 可以很容易地在不同语言之间进行数据交换。 (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。 Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成 Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串

转 sqlplus执行sql报错:ORA-01756:

耗尽温柔 提交于 2020-03-31 06:21:54
1.sqlplus执行sql报错:ORA-01756: quoted string not properly terminated 分类: 技术 在SQLPLUS中执行SQL文件时发生错误:ORA-01756: quoted string not properly terminated 但是SQL其实是没有问题的,找了很多原因,发现可能是由于使用TOAD导出SQL insert语句,编码集的问题导致的。 首先在.bash_profile文件中添加环境变量指定编码集: export NLS_LANG=American_America.AL32UTF8 但是这样做了还是不行,后来找到了解决方法: 使用类似Notepad++之类的文本编辑器将SQL文件的编码转换为 UTF-8无BOM编码格式 结果试下来就没有问题了。 ##update 2020 感谢D-Xr https://ask.csdn.net/questions/1052083 我的notepad最新版编码选项中没有UTF-8无BOM编码的选择,有谁能帮帮我吗?, UTF-8无BOM编码就是“使用UTF-8编码”,UTF-8-BOM是有BOM的。 2.BOM: Byte Order Mark UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM

1013. 独特的摩尔斯编码

两盒软妹~` 提交于 2020-03-31 04:51:29
1013. 独特的摩尔斯编码 中文 English 摩尔斯电码定义了一种标准编码,把每个字母映射到一系列点和短划线,例如: a -> .- , b -> -... , c -> -.-. 。 给出26个字母的完整编码表格: [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."] 现在给定一个单词列表,每个单词中每个字母可以写成摩尔斯编码。 例如, cab 可以写成 -.-.-....- ,(把 c , a , b 的莫尔斯编码串接起来)。 我们称之为一个词的转换。 返回所有单词中不同变换的数量。 样例 样例1: 输入: words = ["gin", "zen", "gig", "msg"] 输出: 2 解释: 每一个单词的变换是: "gin" -> "--...-." "zen" -> "--...-." "gig" -> "--...--." "msg" -> "--...--." 这里有两种不同的变换结果: "--...-."和"--...--.". 样例2: 输入: words = ["a", "b"] 输出:

PHP编程中10个最常见的错误

眉间皱痕 提交于 2020-03-31 04:32:41
PHP是一种非常流行的开源服务器端脚本语言,你在万维网看到的大多数网站都是使用php开发的。本篇经将为大家介绍PHP开发中10个最常见的问题,希望能够对朋友有所帮助。  错误1:foreach循环后留下悬挂指针   在foreach循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法: 1 2 3 4 5 $arr = array (1, 2, 3, 4); foreach ( $arr as & $value ) {     $value = $value * 2; } // $arr is now array(2, 4, 6, 8)   这里有个问题很多人会迷糊。循环结束后,$value并未销毁,$value其实是数组中最后一个元素的引用,这样在后续对$value的使用中,如果不知道这一点,会引发一些莫名奇妙的错误:)看看下面这段代码: 1 2 3 4 5 6 7 8 $array = [1, 2, 3]; echo implode( ',' , $array ), "\n" ; foreach ( $array as & $value ) {} // by reference echo implode( ',' , $array ), "\n" ; foreach ( $array as $value ) {} // by value (i.e.,

encodeURI encodeURIComponent

假装没事ソ 提交于 2020-03-30 21:24:47
一下内容来自:http://www.jb51.net/article/22880.htm 背景 encodeURI 和 encodeURIComponent都是ECMA-262标准中定义的函数,所有兼容这个标准的语言(如JavaScript, ActionScript)都会实现这两个函数。它们都是用来对URI (RFC-2396)字符串进行编码的全局函数,但是它们的处理方式和使用场景有所不同。为了解释它们的不同,我们首先需要理解RFC-2396中对于URI中的字符分类 保留字符(reserved characters):这类字符是URI中的保留关键字符,它们用于分割URI中的各个部分。这些字符是:";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," Mark字符(mark characters):这类字符在RFC-2396中特别定义,但是没有特别说明用途,可能是和别的RFC标准相关。 这些字符是:"-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" 基本字符(alphanum characters):这类字符是URI中的主体部分,它包括所有的大写字母、小写字母和数字 在介绍完上面三类字符串后