Unicode编码

Unicode为世界上所有的文字系统的每一个字符单位分配了一个唯一的整数,称为代码点,范围为:0~1114111;

ASCII将每一索引映射为唯一的二进制表示,但Unicode允许多个不同二进制编码的代码点;

不同的编码在要求存储的字符串数量和操作速度之间进行平衡,由此产生如UTF-8,UTF-16,UTF-32;

历史发展:

  • 早期由于错误地估算了代码点的容量范围,认为Unicode最多只需要2^16个代码点,而产生了USC-2,为16位编码的原始标准;
  • USC-2是由独立的16位代码单元组成的,每个代码单元对应一个单独的Unicode代码点;
  • 这种编码的好处在于索引字符串是一种代价小,固定时间的操作;获取某个字符串的第N个代码点只要选取数组的第N个16位元素;(0X0000)
  • 结果是许多平台如Java,JavaScript等都采用16位编码的字符串;
  • 随后Unicode扩大范围之后,新增加了17个大小为2^16的代码点范围;第一个子范围称为基本多文种平面,其他16个范围称为辅助平面;
  • 之后UTF16取代USC-2,其采用代理对表示附加的代码点;一对16位的代码单元共同编码一个等于或大于2^16的代码点;
  • 这导致了:
    • 代码单元的索引与代码点的索引不同;
    • UTF-16是一种可变长度的编码;
    • 长度为N的字符串内存大小变化基于该字符串特定的代码点;
    • 查找N个代码点不再是固定时间;

Javascript的影响:

时间: 2025-01-06 13:41:19

Unicode编码的相关文章

解决 iOS NSDictionary 输出中文字符”乱码”(Unicode编码)问题

简单定义一个字典,输出结果: NSDictionary *dic = @{ @"我是中文字符": @"223333", @"aaa": @{ @"aaa": @"啦啦啦" } }; NSLog(@"%@", dic); 将会看到这样的"乱码",这种现象经常在调试服务端返回 JSON 结果的时候遇到: 2015-02-25 19:23:40.346 XXXX[13273

PHP输出json数据时,中文不进行unicode编码

今天在写和API接口时,将PHP数组转成json,但是有个规则是不能用unicode编码 试了几种方法: 若PHP是5.4以上的 可以直接使用JSON_UNESCAPED_UNICODE参数 json_encode('中文测试',JSON_UNESCAPED_UNICODE); 这种方法字符串可行,但是数组不可行(有待验证) 2.将数组中的字符串urlencode,然后将数组json_encode转成json,最后进行urldecode 注:urlencode()和urldecode()将中文字

常用中文字体 Unicode 编码

各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 tahoma,arial,'Hiragino Sans GB',\5b8b\4f53,sans-serif; 蘑菇街 font: 12px/1.6 tahoma,arial,sans-serif; SegmentFault font-family: "Helvetica Neue",Helv

Java与编码问题串讲之二–如何理解java采用Unicode编码

Java开发者必须牢记:在Java中字符仅以一种形式存在,那就是Unicode(不选择任何特定的编码,直接使用他们在字符集中的编号,这是统一的唯一方法).由于java采用unicode编码,char 在java中占2个字节.2个字节(16位)来表示一个字符. 这里的Java中是指在JVM中.在内存中.在代码里声明的每一个char.String类型的变量中. 例如: 1 2 3 4 5 6 7 System.out.println(System.getProperty("file.encoding

Unicode编码的原型

Unicode编码定义了这个世界上几乎所有字符(就是你眼睛看到的长那个样子的符号)的数字表示 也就是说Unicode为每个字符发了一张身份证,这张身份证上有一串唯一的数字ID确定了这个字符 在这个纷乱世界上存在的唯一性.Unicode给这串数字ID起了个名字叫[码点](Code Point) 而很多人说的编码其实是想表达[Unicode转换格式](即UTF,Unicode Transformation Formats) 有没有觉得眼前一亮豁然开朗?没错 这就是我们看到的UTF-8/UTF-16/

Unicode 编码解码

1. Regex.Unescape(str);返回Unicode解码,非Unicode直接返回 /// <summary>      /// 2.转为Unicode编码      /// </summary>      /// <param name="str"></param>      /// <returns></returns>  public static  string ToUnicode(string

Unicode编码与中文的转换

1.1.  将unicode编码转换为中文 public String decodeUnicode(String src) { char[] in = src.toCharArray(); char aChar; char[] out = new char[src.length()]; int outLen = 0; int off = 0; int end = src.length(); while (off < end) { aChar = in[off++]; if (aChar == '

unicode 编码在线转换工具--javascript

unicode 编码在线转换工具--javascript 本人在网上搜索,看到有使用javascript做unicode编码转换的,感觉很好玩,所以拿来使用的. 这个功能有目前测试了两种: 1)unicode互相转换,例如\u4e2d\u56fd转换成字符,支持中文和英文: 2)URL编码的解析,例如众所周知的%20是表示空格,还有%24,%33,%44,%62等等: 我相信,只要你试试上面的字符进行解码,你就会知道他们之间关系,如何表示字符,数字,字母. 以上可以直接运行.下面给出相关的JS代

Native2asciiUtil 文本文件转UNICODE编码文件(支持UTF-8,Unicode,UTF-16BE,ANSI|ASCII,GBK)

package com.ctl.util; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * @author Administrator * @Description \u5C06\u6587\u672C\u6587\u4EF6\u8F6C\

SQL Server 中怎么查看一个字母的ascii编码或者Unicode编码

参考文章:微信公众号文章 一直对sql中的left和right有误解,一直以为它是这样的. SELECT Mobile FROM dbo.T_User WHERE Id = 1 执行这样一句: SELECT LEFT(Mobile,2) leftNum FROM dbo.T_User WHERE Id = 1 SELECT RIGHT(Mobile,2) rightNum FROM dbo.T_User WHERE Id = 1 出现的结果是这样的: 而我心中这样认为: 我认为只出现第二个. 运