当前位置: 首页 > news >正文

长春建设网站制作免费建站的平台

长春建设网站制作,免费建站的平台,建设银行对账网站,昆明专业网站设计公司文章目录 一、Unicode字符集与U8/U16/U32编码二、编码1. 占字节数2. ASCII、GB2312、GBK、GB18030 以及 UTF8 的关系3. BOM4. UTF-8的存储实现 三、编译器字符集设置1. GCC语法Example 2. MSVC语法Example 三、wchar_t五、编码转换函数六、代码 实践1. UTF8与UTF16、UTF3… 文章目录 一、Unicode字符集与U8/U16/U32编码二、编码1. 占字节数2. ASCII、GB2312、GBK、GB18030 以及 UTF8 的关系3. BOM4. UTF-8的存储实现 三、编译器字符集设置1. GCC语法Example 2. MSVC语法Example 三、wchar_t五、编码转换函数六、代码 实践1. UTF8与UTF16、UTF32的转换2. GBK与UTF16的转换 七、参考资料 / 辅助网站 一、Unicode字符集与U8/U16/U32编码 Unicode 是国际标准字符集它将世界各种语言的每个字符定义一个唯一的编码以满足跨语言、跨平台的文本信息转换 Unicode 字符集的编码范围是 0x0000 - 0x10FFFF , 可以容纳一百多万个字符 每个字符都有一个二进制数值和它对应这个数值称为 码点 , 比如汉字 “中” 的 码点是 0x4E2D, 大写字母 A 的码点是 0x41, 具体字符对应的 Unicode 编码可以查询 Unicode字符编码表 UTF-8、UTF-16、UTF-32编码是对Unicode字符集的实现UTF的全称是Unicode Transformation Format差别在于存储实现不同。 一个Unicode字符最多需要4个字节存储但是如果每个字符都用4个字节存储就会浪费很多空间所以出现了U8、U16、U32的差异。 UTF-8将Unicode字符按照变长存储占1~6个字节UTF-16将Unicode字符按照2个或4个字节存储UTF-32将Unicode字符全部按照4个字节存储 二、编码 1. 占字节数 注意ANSI和ASCIIANSI是对ASCII的扩展。 不同地区对ANSI进行了不同的扩展在中文windosw下ANSI其实就代表GBK/GB2312/GB18030。在其他国家比如日本就不一样了。 ASCII字符占1个字节U16一个汉字占2个字节U32一个汉字占4个字节U8常用汉字占3个字节GBK和GB2312 每个汉字都占两个字节GB18030 是变长多字节字符集每个字或字符可以由一个两个或四个字节组成 2. ASCII、GB2312、GBK、GB18030 以及 UTF8 的关系 注意UTF16、UTF32并不兼容ASCII因为它们没有单字节编码。 3. BOM BOM全称Byte Order Mark除了表示字节序外还可以区分U8、U16、U32。 编码16进制表示10进制表示解释为 Windows-1252 的字节UTF-8EF BB BF239 187 191UTF-16 (BE)FE FF254 255þÿUTF-16 (LE)FF FE255 254ÿþUTF-32 (BE)00 00 FE FF0 0 254 255^^þÿ (^ is the null character)UTF-32 (LE)FF FE 00 00255 254 0 0ÿþ^^ (^is the null character) 表格引自维基百科Byte order mark Unicode 标准允许UTF-8中的 BOM 但不要求或建议使用它。字节顺序在 UTF-8 中没有意义因此它在 UTF-8 中的唯一用途是在开始时发出信号表明文本流是用 UTF-8 编码的或者已转换为 UTF-8来自包含可选 BOM 的流。该标准也不建议删除 BOM这样编码之间的往返就不会丢失信息并且依赖它的代码可以继续工作。 引自维基百科Byte order mark 也就是说windows下U8也可以用BOM但是在其他平台不一定能被识别GCC似乎也开始支持U8 BOM。 4. UTF-8的存储实现 码点 ↔ UTF-8 的转换 第一个码点最后一个码点字节 1字节 2字节 3字节 4U0000U007F0xxxxxxx——————U0080U07FF110xxxxx10xxxxxx————U0800UFFFF1110xxxx10xxxxxx10xxxxxx——U10000U10FFFF11110xxx10xxxxxx10xxxxxx10xxxxxx 还有5、6字节的维基百科没有列出但Linux手册的utf-8可以查询到。 表格引自维基百科UTF-8 提醒码点是字符在字符集中对应的二进制数值。 可以看到当字符只需要一个字节就能表示时UTF-8就只用一个字节存储而且最高bit是0这与ASCII也兼容。 需要几个字节编码那么第一个字节的开头就有多少个连续的1其余字节开头都用10表示 我也不知道为什么。 所以UTF-8下 1个字节只能表示2^7个字符 2个字节只能表示2^11个字符 3个字节只能表示2^16个字符 4个字节只能表示2^21个字符。 三、编译器字符集设置 1. GCC -finput-charsetcharsetSet the input character set, used for translation from the character set of the input file to the sourcecharacter set used by GCC. If the locale does not specify, or GCC cannot get this information from thelocale, the default is UTF-8. This can be overridden by either the locale or this command-line option.Currently the command-line option takes precedence if theres a conflict. charset can be any encodingsupported by the systems iconv library routine.-fexec-charsetcharsetSet the execution character set, used for string and character constants. The default is UTF-8. charsetcan be any encoding supported by the systems iconv library routine.-fwide-exec-charsetcharsetSet the wide execution character set, used for wide string and character constants. The default is UTF-32or UTF-16, whichever corresponds to the width of wchar_t. As with -fexec-charset, charset can be anyencoding supported by the systems iconv library routine; however, you will have problems with encodingsthat do not fit exactly in wchar_t.语法 -finput-charsetcharset -fexec-charsetcharsetExample -finput-charsetgb2312 -finput-charsetgbk -fexec-charsetutf-82. MSVC 源字符集是用于解释程序源文本的编码。它被转换为内部表示形式用作编译前预处理阶段的输入。然后内部表示形式将转换为执行字符集以将字符串和字符值存储在可执行文件中。 当源文件包含基本源字符集中未表示的字符时可以设置此选项指定要使用的扩展源字符集。 执行字符集是用于在所有预处理步骤之后输入到编译阶段的程序文本的编码。 该字符集用于编译代码中任何字符串或字符文字的内部表示。 设置此选项可指定当源文件包含基本执行字符集中无法表示的字符时要使用的扩展执行字符集。 引自MSVC文档/execution-charset/source-charset MSVC还有/validate-charset详见官方文档。 语法 /source-charset:[IANA_name | .CPID] /execution-charset:[IANA_name | .CPID]如果要将源字符集和执行字符集都设置为UTF-8可以使用/utf-8*编译器选项作为快捷方式。 相当于/source-charset:utf-8 /execution-charset:utf-8在命令行上。 默认情况下这些选项中的任何一个都会启用/validate-charset选项。 该解释来自MSVC文档/execution-charset/source-charset 最后有一个快捷开关/utf-8它同时设置了/source-charset:utf-8和/execution-charset:utf-8。 这些命令行选项与旧的#pragma setlocale和#pragma execution-character-set指令不兼容它们全局应用于所有源文件。 对于停留在较早版本编译器上的用户最好的选择仍然是使用BOM将源文件保存为UTF-8 (其他答案表明IDE在保存时可以做到这一点)。编译器将自动检测到这一点并进行适当的操作。GCC也是如此他在源文件开始时也接受BOM而不会窒息而死因此这种方法在功能上是可移植的。 引自MSVC中的源字符集编码规范 Example /source-charset:utf-8 /source-charset:.65001三、wchar_t 这个取决于系统。 wchar_t在Linux默认占4个字节使用的是U32编码。 wchar_t在Windows默认占2个字节使用的是U16编码。 Windows下的头文件tchar.h定义了一些列的宽窄自动转换函数如类型TCHAR、宏_T()和TEXT()。 在定义了_UNICODE宏和UNICODE宏时会转为wchar_t相应的函数在未定义时就转为char对应的函数。 windows的一些API也是如此例如MessageBox()、MessageBoxA()、MessageBoxW()。 为了防止出现差异需要保证UNICODE宏和_UNCIDEO宏 都定义或都不定义。 五、编码转换函数 待办 六、代码 实践 1. UTF8与UTF16、UTF32的转换 待办 2. GBK与UTF16的转换 待办 七、参考资料 / 辅助网站 一文读懂Unicode编码原理 - 一个汉字UTF8编码占用多少字节。 UTF8、UTF16编解码网站。 Codeblocks converting to execution character set: Illegal byte sequence错误解决办法 MSVC中的源字符集编码规范 /source-charset (Set source character set)New Options for Managing Character Sets in the Microsoft C/C Compiler gcc中的-finput-charset和-fexec-charset开关 彻底搞明白 GB2312、GBK 和 GB18030 维基百科Byte order mark GCC Manual UTF8 UTF16 之间的互相转换 Unicode、UTF-8、UTF-16 终于懂了
http://www.dnsts.com.cn/news/62523.html

相关文章:

  • 网站的工商网监怎么做进去坪山医院网站建设
  • 教你做网站和学习教程熊掌号家装公司加盟哪个公司好
  • 企业网站建设的基本标准是教育局网站群建设方案
  • 京东的网站是哪家公司做的图片摄影网站
  • 设计网站 常用学做网站要学什么语言
  • 深圳网站建设服卡片式多图流的WordPress主题模板
  • 怎么开发网站程序如何建立和设计公司的网站
  • 网站搭建费用计入什么科目网站响应时间多久
  • 生鲜网站开发apache多网站配置
  • 实验室建设网站网站实名认证查询申请表
  • 淘宝上的网站建设浏览器网页截图快捷键
  • 做网站的硬件河北建设工程信息网招聘网
  • 易语言如何做网站吗外贸流程案例
  • 做网站包头做PPT哪个网站的素材多点
  • 南宁seo 网站收录学校网站建
  • 专业定制网站开发全网整合营销外包
  • 做流媒体视频播放网站求助做展示型网站多少钱
  • 网站诊断分析案例5000做网站
  • 保定专业网站制作做网站建设平台
  • 制作手机网站经开区网站建设
  • 崇信县门户网站最新留言深圳的公司
  • 网站开发的英文文献浙江做网站
  • three.js做的酷炫网站网站开发全包
  • 科技平台网站建设工程建设项目在哪个网站查询
  • 中国建设银行网站-诚聘英才欣宝儿在什么网站做直播
  • 做外贸网站机构广告公司名字后缀
  • 视频网站用户增长怎么做千图网在线设计
  • 网站鼠标移上去显示层微信公众号微网站建设
  • 建设好网站能赚到钱吗?如何取消危险网站提示
  • 深圳机械网站建设建设网站哪家好