精华内容
参与话题
问答
  • java 面试题 总结

    2009-09-16 08:45:34
    态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang....
  • javascript入门笔记

    2018-05-15 15:01:07
    可以由0或个参数的名称来组成,个参数的话中间用 , 隔开 定义函数时的参数列表,都称为 "形参(形式参数)" 2、调用语法 任意合法JS位置处 函数名(参数列表); 调用函数时,所传递的参数列表,称之为"实参...
  • 而对于这两者,我坚定不移的喜欢unicode~  在多字节环境下,系统会按照ASCII字符中128个字符进行截断操作,由于汉字是占用两个的字节的,所以在即有汉字又有英文的字符串中,该函数只会截断字符串右边英文...

      在编译许多程序的时候,我们常常会出现诸如指针转换错误或者const char[] 不能转换成XX的错误,这时很可能就是项目编码的问题了,如果您使用的是VS编程环境,那么打开工程属性,里面就有个选项是给你选择采用多字符集还是采用 unicode。而对于这两者,我坚定不移的喜欢unicode~

      在多字节环境下,系统会按照ASCII字符表中128个字符进行截断操作,由于汉字是占用两个的字节的,所以在即有汉字又有英文的字符串中,该函数只会截断字符串右边英文字符,而对于汉字则无法处理。

      而对于Unicode字符集使用两个字节对世界上几乎所有的语言进行编码(0×0000-0xFFFF),它可以表达的字符数量为16位,即 65536个字符,每种语言的代码段不同,两个字节所表达的字符是唯一的,所以在该环境下,每一个字符都有唯一的一个编码,那么在进行截断操作时,自然不 会出现意料之外的结果。
     
      而我看过好几本有名气的C++的书中,都是说到一个项目或者程序的编码最好都选择Unicode(可是在几本国内出的书里不但没提及,而且提供的源代 码也全都是“多字节”的),在此,我并没有鄙视多字节的意思,只是觉得写出通用的,跨语言的代码时候最好采用unicode。

      下面这段话是来自MSDN:

    要完成应用程序的 Unicode 编程,还必须:

    使用 _T 宏有条件地编写字符串的代码,使之可移植到 Unicode。
    当传递字符串时,请注意函数参数要求的长度是以字符为单位还是以字节为单位的。如果在使用 Unicode 字符串,这一区别是很重要的。
    使用 C 运行时字符串处理函数的可移植版本。
    使用以下用于字符和字符指针的数据类型:
    TCHAR 这里将使用 char。
    LPTSTR 这里将使用 char*。
    LPCTSTR 这里将使用 const char*。CString 提供 operator LPCTSTR 来在 CString 和 LPCTSTR 之间进行转换。
    CString 还提供识别 Unicode 的构造函数,赋值运算符和比较运算符。

      呵呵~补充一点就是使用_T的时候,如果系统提示你它是没有定义的标识符的话,带上atlstr.h就ok了。哈,又是一个笔记~


    超越C++ 原创文章,转载请注明来源并保留原文链接

    本文链接:http://www.beyondc.cn/programming-multi-byte-and-unicode.html

    展开全文
  • wszName(0 To 511) As Byte '接口名称的Unicode字符串,必须为512字节 dwIndex As Long '接口编号 dwType As Long '接口类型,参看IP_ADAPTER_INFO类型的Type成员 dwMtu As Long '最大传输单元 dwSpeed As Long...
  • 1.6.3 创建对个工作中相同单元格区域的三维引用 30 1.6.4 更新跨工作簿引用的公式 31 1.7 审核公式 31 1.7.1 使用公式错误检查器 32 1.7.2 定位特定类型的数据 33 1.7.3 追踪单元格之间的关系 33 1.7.4 ...
  • 应用软件可以从各种不同的函数中获得特定国家的信息,并可观察控制面板的设置,以确定用户的首选项。软件的本地化要解决的真正问题,实际上就是如何来处理不同的字符集。...Unicode提供了一种简单而又一致的

    应用软件可以从各种不同的函数中获得特定国家的信息,并可观察控制面板的设置,以确定用户的首选项。软件的本地化要解决的真正问题,实际上就是如何来处理不同的字符集。

    有些文字和书写规则(比如中文)的字符集中的符号太多了,因此单字节(它提供的符号最多不能超过256个)是根本不够使用。为此出现了双字节字符集(DBCS),以支持这些文字和书写规则。在双字节字符集中,字符串中的每个字符可以包含一个字节或包含两个字节。

    Unicode提供了一种简单而又一致的表示字符串的方法。Unicode字符串中的所有字符都是16位的(两个字节)。在Windows Vista中,每个Unicode字符都是使用UTF-16编码。

    UTF-8:将一些字符编码为1个字节,一些字符编码为2个字节,一些字符编码为3个字节,一些字符编码为4个字节。值在0x0080以下的字符压缩为1 个字节,0x0080和0x07FF之间的字符转换为2个字节,0x0800以上的字符都转换为3个字节,最后代理对(surrogate pair)被写为4个字节。

    UTF-32:将每个都编码为4个字节。

    为什么使用Unicode
    1) 可以简化将来的代码转换工作
    2) 可以很容易地在不同语言之间进行数据交换
    3) 使你能够分配支持所有语言的单个二进制exe文件或dll文件
    4) 提高应用程序的运行效率

    微软公司对Unicode支持的情况
    1) Windows 2000既支持Unicode,也支持ANSI,因此可以为任意一种开发应用程序。
    2) Windows 98只支持ANSI,只能为ANSI开发应用程序。
    3) Windows CE只支持Unicode,只能为Unicode开发应用程序。

    标准C头文件String.h中定义了名为wchar_t的数据类型,它是一个Unicode字符的数据类型:typedef unsigned short wchar_t;

    ANSI C中所有的Unicode函数均以wcs开头,wcs是宽字符串的英文缩写。若要调用Unicode函数,只需用前缀wcs来取代ANSI字符串函数的前缀str即可。

    可以创建同时为ANSI和Unicode进行编译的单个源代码文件。若要建立双重功能,必须包含tchar.h文件,而不是包含Stirng.h文件。

    tchar.h文件的唯一作用是帮助创建ANSI/Unicode通用源代码文件。它包含你应该用在源代码中的一组宏,而不应该直接调用str函数或者 wcs函数。如果在编译源代码文件时定义了_UNICODE,这些宏就会引用wcs这组函数。如果没有定义_UNICODE,那么这些宏将引用str这组函数。例如在tchar.h中有一个宏称为_tcscpy。如果在包含该头文件时没有定义_ UNICODE,那么_tcscpy就会扩展为ANSI的strcpy函数。否则, _tcscpy将扩展为Unicode的wcscpy函数。

    字符串(literal string)前面的大写字母L,用于告诉编译器该字符串应该作为Unicode字符串来编译。

    _TEXT宏也在tchar.h文件中做了定义。如果定义了_UNICODE,那么_TEXT定义为式:
    #define _TEXT(x) L ## x
    否则_TEXT将定义为:#define _TEXT(x) x

    Windows头文件也定义了ANSI/UNICODE通用数据类型PTSTR和PCTSTR。这些数据类型既可以指ANSI字符串,也可以指UNICODE字符串,这取决于当编译程序模块时是否定义了UNICODE宏。

    _UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。

    展开全文
  • Python核心编程第二版(中文)

    热门讨论 2015-04-23 16:40:13
    1.3.12 解释性和(字节)编译性 1.4 下载和安装Python 1.5 运行Python 1.5.1 命令行上的交互式解释器 1.5.2 从命令行启动脚本 1.5.3 集成开发环境 1.5.4 其他的集成开发环境和执行环境 1.6 Python文档 1.7...
  • c#学习笔记.txt

    热门讨论 2008-12-15 14:01:21
    可选的形参指定委托的参数,而返回类型则指示委托的返回类型。如果下面两个条件都为真,则方法和委托类型是兼容的:(兼容的概念就是可以用此声明的委托对方法进行委托). 1它们具有相同的参数数目,并且类型相同,...
  • Python核心编程(中文第二版)

    热门讨论 2009-10-02 12:08:14
     1.3.12 解释性和(字节)编译性   1.4 下载和安装Python   1.5 运行Python   1.5.1 命令行上的交互式解释器   1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境和执行...
  • 1.8.4 在同一查询中次引用同一个 27 1.8.5 使用衍生 28 1.8.6 使用UNION组合结果集 29 1.9 使用APPLY来为每行调用函数 30 1.9.1 使用CROSS APPLY 30 1.9.2 使用OUTER APPLY 32 1.10 数据源...
  • 态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java....
  • 阻止转义(r语法)三、什么是字符编码编码1)ASCII码表:用1个字节来对字符进行编码(码值范围:0 ~ 127)2)Unicode编码1)chr函数2) ord函数3) 编码字符四、字符串的相关操作1. 获取字符串中的

    python中的字符串

    一、 什么是字符串(str)

    字符串是容器型数据类型, 将单引号或者双引号作为容器的标志, 元素不需要用逗号隔开: ‘元素1元素2元素3…’
    字符串是不可变的(不支持增删改);字符串是有序的(支持下标操作)

    字符串中的元素: 只能是文本符号(所有计算机能表达出来的符号都可以作为字符串的元素),一个符号对应一个元素
    ‘湖北’, ‘abcn’,’!@#$%’, ‘↑♦’, ‘123456’

    字符串中每一个独立的元素又叫:字符;python中只有字符的概念,但是没有字符对应的数据类型

    1.空串

    str1 = ''
    str2 = ""
    str3 = ''''''
    str4 = """"""
    print(type(str1), type(str2), type(str3), type(str4))
    

    2.非空字符串

    str11 = 'abc'
    str22 = "你好"
    str33 = '''你好,hello'''
    str44 = """123,hai"""
    

    二、 字符(字符串中的元素)

    (一)、普通字符、转义字符

    字符串中的字符分两种:普通字符、转义字符

    1)普通字符 - 除了转义字符串以外的字符
    2)转义字符 - 在指定符号前加\用来表示一些特殊功能和特殊意义的字符

    \n - 换行
    \t - 制表符(按tab键)
    ’ - 单引号
    " - 双引号
    \ - 反斜杠

    (二)、编码字符:\u4位的十六进制

    str1 = '\tabc\n123'
    print(str1)
    
    str2 = 'abc\'123'
    str3 = "abc\"123"
    str4 = 'abc\\n123'
    print(str4)
    
    # 这儿 \u4e00 和 \u7800 都是转义字符中的编码字符
    str5 = '\u4e00你好!\u7800'
    print(str5, len(str5))
    
    # 注意: 计算字符串长度的时候,一个转义字符的长度是1
    
    3) 阻止转义(r语法)

    在字符串的最前面加 r/R , 那么这个字符串中的所有的转义字符都无效

    str6 = r'\tabc\n123\u4e00'
    print(str6)
    

    三、什么是字符编码

    计算机在存储数据的时候只能存数字,而且存的是数字的补码
    为了能够让计算机存储文本数据,给每个字符关联了一个固定的数字,用来对这个字符进行存储。每个字符关联的那个数字就是这个字符的编码值。

    编码表

    1)ASCII码表:用1个字节来对字符进行编码(码值范围:0 ~ 127)

    a.数字在字母的前面(字符0~字符9的编码值连续递增)
    b.大写字母在小写字母的前面(字母之间是连续递增)
    c.大写字母和小写字母之间有其他的符号(不连续)

    2)Unicode编码表

    Unicode编码表是对ASCII表的扩展(Unicode编码表中包含了ASCII表中所有的符号)
    Unicode编码表中包含了世界上所有国家所有民族所有的语言的符号,总共65536个
    中文范围:4e00 ~ 9fa5

    1)chr函数

    chr(编码值) - 获取指定编码值对应的字符

    print(chr(0x0F00))
    for x in range(0x0F00, 0x0FFF):
        print(chr(x), end=',')
    print()
    
    # 打印所有的中文
    count = 0
    for x in range(0x4e00, 0x9fa5):
        print(chr(x), end=' ')
        count += 1
        if count % 40 == 0:
            print()
    print()
    

    2) ord函数

    ord(字符) - 获取指定字符对应的编码值

    print(ord('余'), ord('婷'))
    

    3) 编码字符

    str1 = '\u4e00你好!'
    print(str1)
    

    四、字符串的相关操作

    1. 获取字符串中的元素(获取字符)

    字符串获取元素和列表获取元素的语法一样

    str1 = 'how are you!'
    
    1)获取单个元素
    print(str1[2])
    print(str1[-1])
    
    2) 切片
    print(str1[1:5])    # 'ow a'
    print(str1[-3::-1])  # 'oy era woh'
    
    3) 遍历
    for x in str1:
        print(x)
    
    for index in range(len(str1)):
        print(str1[index])
    

    2. +, *

    字符串1 + 字符串2 
    字符串 * N / N * 字符串
    
    str1 = 'abc'
    str2 = '123'
    print(str1 + str2)     # abc123
    print(str1 * 2)        # abcabc
    

    3. ==, !=

    print(str1 == 'abc')     # True
    print(str1 == 'bac')     # False
    

    4. >, <, >=, <= (针对两个字符串)

    两个字符串比较大小: 比较的是第一组不相等的字符的编码值的大小

    str3 = 'zABC'
    str4 = 'z1bcd'
    print(str3 > str4)     # True
    
    应用:
    判断是否是数字字符: '0' <= char <= '9'
    判断是否是小写字母:'a' <= char <= 'z'
    判断是否是大写字母:'A' <= char <= 'Z'
    判断是否是字母:'a' <= char <= 'z' or 'A' <= char <= 'Z'
    判断是否是中文字符: '\u4e00' <= char <= '\u9fa5'
    

    5. in 和 not in

    字符串1 in 字符串2 - 判断字符串1是否是字符串2的子串

    print('abc' in 'acbmn')   # False
    print('abc' in 'abcmn')   # True
    print('m' in 'abcmn')     # True
    

    6.相关函数

    max/min/sorted/reversed等,这些函数都适用于字符串

    len(字符串) - 求字符串长度
    str(数据) - 将自定数据转换成字符串

    a.所有的数据都能转换成字符串
    b.将数据的打印值作为字符串的内容
    str1 = r'\tabc'
    print(len(str1))    # 5
    
    num = 100
    str(num)        # '100'
    
    str([1, 2, 3])   # '[1, 2, 3]'
    

    五、字符串的相关方法

    1. center/rjust/ljust/zfill

    字符串.center(长度, 填充字符) - 产生一个新的字符串:长度是指定的长度,原字符串在新字符串的中间,左右用指定字符填充
    字符串.rjust(长度, 填充字符) - 产生一个新的字符串:长度是指定的长度,原字符串在新字符串的最右边,左边用指定字符填充
    字符串.zfill(长度) == 字符串.rjust(长度, ‘0’)
    字符串.ljust(长度, 填充字符) - 产生一个新的字符串:长度是指定的长度,原字符串在新字符串的最左边,右边用指定字符填充

    str1 = 'abc'
    new_str1 = str1.center(7, 'x')
    print(new_str1)     # xxabcxx
    
    new_str2 = str1.rjust(7, '*')
    print(new_str2)     # ****abc
    
    new_str2 = str1.ljust(7, '*')
    print(new_str2)     # abc****
    
    # 练习1: 给任意一个商品的数字编号值,转换成固定格式的商品编码: GDXXXX  -> GD0001, GD0012,....
    
    num = 2   # 0034
    num_str = 'GD'+str(num).zfill(4)
    print(num_str)
    

    2. replace

    字符串1.replace(字符串2, 字符串3) - 将字符串1中所有的字符串2全部替换成字符3
    字符串1.replace(字符串2, 字符串3, N) - 将字符串1中的前 N 个字符串2替换成字符串3

    str1 = 'how are you? i am fine, Thank you!'
    new_str = str1.replace('o', '*')
    print(new_str)     # h*w are y*u? i am fine, Thank y*u!
    
    new_str = str1.replace('o', '+', 2)
    print(new_str)     # h+w are y+u? i am fine, Thank you!
    
    new_str = str1.replace('you', 'me')
    print(new_str)     # how are me? i am fine, Thank me!
    

    字符串内建函数有四十来个,这里写不下,我会再附一篇专门写字符串的内建函数方法。今天就到这里,再见~

    展开全文
  • 深入理解Python中文版高清PDF

    热门讨论 2012-09-04 19:37:04
     1.3.12 解释性和(字节)编译性   1.4 下载和安装Python   1.5 运行Python   1.5.1 命令行上的交互式解释器   1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境...
  • Linux C 编程一站式学习.pdf

    千次下载 热门讨论 2010-11-24 01:27:27
    2.5. 以字节为单位的I/O函数 2.6. 操作读写位置的函数 2.7. 以字符串为单位的I/O函数 2.8. 以记录为单位的I/O函数 2.9. 格式化I/O函数 2.10. C标准库的I/O缓冲区 2.11. 本节综合练习 3. 数值字符串转换函数 4. 分配...
  • 系统对Unicode文本(字符采用双字节编码)和ANSI(字符采用单字节编码)文本都支持。 图标函数(Icon) 图标是一个图片,由一个位图图像组成,并和一个掩码组合构成该图片的透明区域。当提到图标时,可以是下列两...
  • 8.16 在类中定义个构造函数 296 8.17 不通过调用init来创建实例 298 8.18 用Mixin技术来扩展类定义 299 8.19 实现带有状态的对象或状态机 305 8.20 调用对象上的方法,方法名以字符串形式给出 311 8.21 实现访问者...
  • 1.1.1 字节存储顺序 1.1.2 ASCII与Unicode字符集 1.2 WINDOWS 操作系统 1.2.1 Win API简介 1.2.2 常用Win32 API函数 1.2.3 什么是句柄 1.2.4 Windows 9x与Unicode 1.2.5 Windows NT/2000/XP与Unicode 1.2.6 Windows ...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...
  •  1.3.12 解释性和(字节)编译性   1.4 下载和安装python   1.5 运行python   1.5.1 命令行上的交互式解释器  . 1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境和...
  • Python核心编程第二版

    热门讨论 2009-07-30 17:07:20
     1.3.12 解释性和(字节)编译性   1.4 下载和安装Python   1.5 运行Python   1.5.1 命令行上的交互式解释器   1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境和执行...
  • MYSQL中文手册

    2013-03-11 21:21:34
    多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在...
  • 1.11.5 长字符串、原始字符串和Unicode 1.12 小结 1.12.1 本章的新函数 1.12.2 接下来学什么 第2章 列表和元组 2.1 序列概览 2.2 通用序列操作 2.2.1 索引 2.2.2 分片 2.2.3 序列相加 2.2.4 乘法 2.2.5 成员资格 ...
  • 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器...
  • 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器...
  • c# 加密和解密相关代码

    热门讨论 2011-09-06 11:04:59
    序中判断是否为数字的方法有很种,可以使用正则表达式、int.Parse 方法和double.Parse 方法等。下面的代码 通过double.Parse 方法判断textBox1 文本框中的输入是否为数字。 double.Parse(textBox1.Text); 实例573 ...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0083 将字符串转换成Unicode格式 56 3.4 排序及分组类算法 56 0084 利用回溯法将一组数平均分成两组 56 0085 利用冒泡法对数字进行排序 58 0086 用回溯法找出n个自然数中取r个数的所有组合 58 0087 0~N...
  • 实例157 将汉字转换为Unicode字符代码 实例158 获取在已打开文件中的读写位置 实例159 判断变量是否被初始化 实例160 获取文件创建或修改日期 实例161 自定义错误号 实例162 获取当前打开窗口数量 实例163 ...
  • 精易模块[源码] V5.15

    2015-03-21 22:03:37
    5、公开子程序(字节集_到文本|字节集_到整数|字节集_取左边|字节集_取右边|字节集_取空白|字节集_取长度|字节集_取中间|字节集_替换|字节集_寻找|字节集_取指针)模块原有命令。 6、修正“文本_取中间_批量”当参数...
  • 10.2.2 Winsock的寻址方式和字节顺序 364 10.2.3 Winsock编程流程 366 10.2.4 典型过程图 371 10.2.5 服务器和客户方程序举例 371 10.2.6 UDP协议编程 374 10.3 网络程序实际应用 374 10.3.1 设置I/O...

空空如也

1 2
收藏数 39
精华内容 15
关键字:

unicode 函数表 多字节