了解字符编码

 

一、什么是字符编码,字符编码的来历?

1、字符集——集合

字符是各种文字和符号的总称,包括各个国家文字、标点符号、图形符号、数字等。

字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集有:ASCII字符集、ISO 8859字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。

总结:使用哪些字符,也就是说哪些汉字、字母、符号和数字等会被收入标准中。所包含“字符”的集合就叫做“字符集”。

2、字符编码——规则

字符编码就是以二进制的数字来对应字符集中的字符,比如在ASCII编码规则中,字符‘A’既不对应01000010,也不对应10000000 11110101,而是对应01000001。这就是规则。

总结:规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。

3、字符编码的来历

我们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流,那么在这两者之间的转换规则就需要一个统一的标准,因此就产生了字符编码。

二、为什么会有那么多种字符编码,编码的演化?

1、ASCII

American Standard Code for Information Interchange,美国信息互换标准代码。

这套编码规则是由美国定制,它主要用于显示现代英语,一共规定了128个字符的编码,只占用了一个字节(8 bit)的后面7位,最前面的1位统一规定为0,一个字节都没用完。

2、ISO-8859-1

扩展ASCII编码。

利用了一个字节的第8位,即 00000000(0) ~ 01111111(127) 与ASCII的编码一样,对 10000000(128) ~ 11111111(255)这一段进行了编码。

3、GB2312

当中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,于是想到把那些ASCII码中127号之后的奇异符号们直接取消掉, 规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字。

在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。

这种汉字方案叫做 "GB2312"。GB2312 是对 ASCII 的中文扩展。兼容ASCII。

4、GBK

但是中国的汉字太多了,我们很快就就发现有许多人的人名没有办法打出来,于是不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。结果扩展之后的编码方案被称为 “GBK” 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。

5、GB18030

后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK 扩成了 GB18030。从此之后,中华民族的文化就可以在计算机时代中传承了。

三、多种字符编码有没有一个统一的标准?

1、Unicode:字符集而不是字符编码

如果有一种编码,将世界上所有的符号都纳入其中,无论是英文、日文、还是中文等,大家都使用这个编码表,就不会出现编码不匹配现象。每个符号对应一个唯一的编码,乱码问题就不存在了。这就是Unicode编码。

Unicode是指一张表,里面包含了可能出现的所有字符,每个字符对应一个数字,这个数字称为码点(Code Point)。Unicode只是一个符号集,只规定字符所对应的码点,并没有指定如何存储,如何进行存储出现了不同的编码方案,关于Unicode编码方案主要有两条主线:UCS和UTF。UTF主线由Unicode Consortium进行维护管理,UCS主线由ISO/IEC进行维护管理。

2、UCS

UCS-2是定长字节的,固定使用2个字节进行编码;UCS-4是定长字节的,固定使用4个字节进行编码。

固然统一了编码方式,但它的效率不高,比如规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。

3、UTF

UTF-8是一种变长编码方式,使用1-4个字节进行编码。UTF-8完全兼容ASCII,对于ASCII中的字符,UTF-8采用的编码值跟ASCII完全一致。UTF-8是Unicode一种具体的编码实现。UTF-8是在互联网上使用最广的一种Unicode的编码规则,因为这种编码有利于节约网络流量(因为变长编码,而非统一长度编码)。

UTF-8是不定长的编码,使用1、2、3、4个字节编码,而UTF-16则只使用2或4个字节编码。UTF-16也是Unicode一种具体的编码实现。

四、fromCharCode()和charCodeAt()

1、fromCharCode()

可接受一个指定的 Unicode 值,然后返回一个字符串。

<script type="text/javascript">
          document.write(String.fromCharCode(72,69,76,76,79))
</script>

结果:HELLO

2、charCodeAt()

可返回指定位置的字符的 Unicode 编码。

<script type="text/javascript">
         var str="Hello world!"
       document.write(“The Unicode for the first character is: ” + str.charCodeAt(0) + “<br />”);
</script>

结果:The Unicode for the first character is: 72

五、总结

 ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。

拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符

GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。

Unicode编码:包含世界上所有的字符,是一个字符集。

UCS-2、UCS-4:是Unicode字符的实现方式之一,固定使用2个字节/4个字节进行编码,是定长字节的。

UTF-8:是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果您想要调整中间件WebSphere Application Server的字符编码,可以按照以下步骤操作: 1. 登录WebSphere管理控制台。 2. 选择“应用程序服务器”,然后选择您想要更改字符编码的服务器。 3. 在“服务器信息”部分下,单击“进程定义”。 4. 在“进程定义”页面上,单击“Java虚拟机”。 5. 在“自定义属性”下,单击“新建”。 6. 在“名称”字段中输入“client.encoding.override”。 7. 在“值”字段中输入您想要使用的字符编码,例如“UTF-8”。 8. 单击“应用”以保存更改。 9. 重新启动WebSphere应用程序服务器以使更改生效。 这些步骤应该能够帮助您调整中间件WebSphere Application Server的字符编码。 ### 回答2: 中间件(Middleware)是连接不同应用程序之间的软件,用于处理请求和响应的一系列操作。在调整中间件 WAS(Web Application Server,网络应用服务器)的字符编码时,需要按照以下步骤进行: 首先,了解当前中间件 WAS的字符编码设置。可以通过查看相关配置文件或者中间件的管理界面来确认当前的字符编码设置情况。 然后,确定需要调整的字符编码。根据项目需求和应用程序的特性,选择合适的字符编码。常见的字符编码包括UTF-8、GBK、ISO-8859-1等。UTF-8是一种通用的字符编码,支持全球范围内的字符符号,因此在多语言环境下使用广泛。 接下来,进行字符编码的调整操作。具体的调整步骤可能会因中间件的不同而有所差异,但一般包括以下几个方面: 1. 找到中间件的字符编码配置文件。这个配置文件通常包含了设置字符编码的相关参数。 2. 打开配置文件,找到字符编码的设置项。这个设置项可能会以"编码"、"character set"或者"charset"等关键词命名。 3. 将当前的字符编码修改为目标编码。根据所选的字符编码,将配置文件中对应的参数值进行修改。 4. 保存修改后的配置文件,并重新启动中间件 WAS。在一些中间件中,修改字符编码后需要重新启动才能生效。 最后,进行测试并验证调整结果。通过向应用程序发送请求,并查看响应结果中的字符编码信息,确认调整是否成功。可以使用浏览器开发者工具或者网络抓包工具来查看字符编码信息。 调整中间件 WAS的字符编码需要根据具体情况进行操作,上述步骤仅为一般性指导。建议参考中间件的官方文档或者寻求相关技术支持,以确保正确设置字符编码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值