国际化字符编码处理总结

2023-10-27

在处理国际化时,处理不当就会产生乱码,通用的做法是都转换为UTF-8编码,对于高层开发语言十分简单,对于底层编程语言则有些复杂。其中涉及的概念也有很多。

字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。

  1. ASCII 字符
  2. Unicode 字符
  3. 宽字符

    • 用多个字节来代表的字符称之为宽字符,而Unicode只是宽字符编码的一种实现,宽字符并不一定是Unicode。
    • 宽字符字符串表示为一个 wchar_t[] 数组。可以通过用字母 L 作为字符的前缀将任何 ASCII 字符表示为宽字符形式。例如,L’\0’ 是宽终止NULL 字符。同样,可以通过用字母 L 作为 ASCII 字符串的前缀 (L”Hello”) 将任何 ASCII 字符串表示为宽字符字符串形式。
    • wchar_t的宽度属于编译器的特性。对于Windows是16位宽;类Unix系统中,默认是32位宽。
  4. 字节顺序
    字节顺序涉及到字节的大小端,一个文件会在前面加上一个字符用来表明该文件采用的是大端还是小端。这个字符的名字叫做”零宽度非换行空格”(zero width no-break space),用FEFF表示。
    如果一个文本文件的头两个字节是FE FF,就表示该文件采用大端方式;如果头两个字节是FF FE,就表示该文件采用小端方式。
    “零宽度非换行空格” 又叫 BOM(Byte Order Mark),不同的编码方式,会有不同的BOM格式。

BOM定义

参考:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

国际化字符编码处理总结 的相关文章

随机推荐

  • OpenStack 学习笔记(一) 概况

    偶然机会 需要了解一下OpenStack的概况 因此与几个同事一起看了一下 此学习笔记是记录一下学习的知识点 备自己以后回顾复习 一 OpenStack 概况 OpenStack是一个由NASA 美国国家航空航天局 和Rackspace合作
  • python处理wav文件时出现error:X和Y不在同一维度

    python处理wav文件时出现error X和Y不在同一维度 ValueError x and y must have same first dimension but have shapes 1290240 and 2580480 记录
  • Python 动态规划解决不同路径问题

    目录 一 LeetCode 62 不同路径 1 题目描述 2 解题思路 3 代码 二 LeetCode 63 不同路径II 1 题目描述 2 解题思路 3 代码 三 LeetCode 64 最小路径和 1 题目描述 2 解题思路 3 代码
  • 初识Django

    虚拟环境 python pip install Virtualenv pip install Virtualenvwrapper win workon 查看当前虚拟环境 mkvirtualenv xx 创建虚拟环境xx 默认的虚拟环境存放的
  • 编译系统总结篇-Android10.0编译系统(十一)

    Android取经之路 的源码都基于Android Q 10 0 进行分析 Android取经之路 系列文章 系统启动篇 Android系统架构Android是怎么启动的Android 10 0系统启动之init进程Android10 0系
  • Linux CentOS7 添加中文输入法

    在安装CentOS7时 现在默认安装了桌面中文系统 可以切换为英文 中英文可以按要求随时更换 而在CentOS7桌面环境下 显示中文非常方便 正确 但不能录入中文 在远程登录系统的情况下 不论是系统语言 LANG 设置为中文或英文 都可以在
  • 获取lib库中Filler/buffer/CK单元的类型——innovus

    1 Filler的所有类型 命令 dbGet dbGet head allCells name FIL p name 2 BUFFER的所有类型 命令 dbGet dbGet head allCells name BUF p name 3
  • 实时时钟芯片DS1302

    一 DS1302主要介绍 1 DS1302 的特点 DS1302 是 DALLAS 达拉斯 公司推出的一款涓流充电时钟芯片 DS1302 实时时钟芯片广泛应用于电话 传真 便携式仪器等产品领域 它的主要性能 指标如下 1 DS1302 是一
  • 正则校验-我需要的正则表达式知识

    正则校验 我需要的正则表达式知识 正则表达式由正则表达式引擎提供支持 不同编程环境有不同的正则表达式引擎 在实际使用正则表达式的过程中会有一些差别 什么是正则表达式 正则表达式是用于描述匹配复杂字符串规则的工具 一个正则表达式对应着一个文本
  • Mybatis基础知识浅谈

    Mybatis浅谈 目录 1 什么是Mybatis 2 Mybatis的快速入门 2 1MyBatis开发步骤 2 2 环境搭建 3 MyBatis的增删改查操作 3 1 MyBatis的插入数据操作 3 2 MyBatis的修改数据操作
  • 可执行文件的格式(ELF格式)详解

    各种讲解elf文件格式一上来就是各种数据类型 看了半天却不知道这些数据类型是干啥的 所以咱就先找个例子直接上手 这样对elf文件格式有个具体而生动的了解 然后再去看那些手册 就完全不惧了 我们使用一个汇编程序max s并对其进行编译链接产生
  • vant 使用deep修改样式不好使解决方案

  • php7 libevent扩展,PHP7 安装event扩展的实现方法

    Libevent 是一个用C语言编写的 轻量级的开源高性能I O框架 支持多种 I O 多路复用技术 epoll poll dev poll select 和 kqueue 等 支持 I O 定时器和信号等事件 注册事件优先级 PHP提供了
  • 【牛客】四选一多路器

    描述 制作一个四选一的多路选择器 要求输出定义上为线网类型 状态转换 d0 11 d1 10 d2 01 d3 00 信号示意图 波形示意图 输入描述 输入信号 d1 d2 d3 d4 sel 类型 wire 输出描述 输出信号 mux o
  • 前端面试题之React

    文章目录 1 React生命周期 V16 3 之前 挂载阶段 组件更新阶段 卸载阶段 新增后 挂载阶段 更新阶段 static getDerivedStateFromProps shouldComponentUpdate render ge
  • SSM myBatis 配置及自动生成Bean 和 Dao

    因为我发现在做SSM 的配置的时候 配置中出现一点问题都会导致项目打包失败或者其他问题 但是我发现网上很多都没有贴出每个配置文件的代码 如果是新手在配置上就会走很多的弯路 所以这里我贴出所有配置文件的代码 这样会方便很多新手快速的构建正确的
  • Arduino控制舵机

    一 舵机一般有三根线 和Arduino连接一般如下 二 代码分析 include
  • 为什么我们使用Story Points进行估算?

    故事点 Story Points 简介 Scrum指南告诉我们 估算应该由将要完成工作的人提供 但它并没有告诉我们应该如何提供估算 它把这个决定留给了我们 Scrum团队使用的一种常见策略是使用称为故事点的度量单位进行估算 但为什么要使用S
  • hive的row_number()、rank()和dense_rank()的区别以及具体使用

    row number rank 和dense rank 这三个是hive内置的分析函数 下面我们来看看他们的区别和具体的使用案例 首先创建一个文件test A 1 B 3 C 2 D 3 E 4 F 5 G 6 1 2 3 4 5 6 7
  • 国际化字符编码处理总结

    在处理国际化时 处理不当就会产生乱码 通用的做法是都转换为UTF 8编码 对于高层开发语言十分简单 对于底层编程语言则有些复杂 其中涉及的概念也有很多 字符是指计算机中使用的字母 数字 字和符号 包括 1 2 3 A B C 等等 在 AS