编码和字符集是什么 字符集怎么设置


编码和字符集是什么?要搞明白二者,首先要明确,计算机识别的是二进制的机器码,而人说的是自然语言,类比生活中的中文和英文的交流,需要对应翻译,人和计算机之间想要进行信息的交换也需要让 计算机能听懂人话,人能看懂计算机的语言,同样需要翻译
编码就是定义如何自然语言的字符"翻译"为二进制数的过程
字符集就是自然语言字符的集合,不同的字符集支持的字符范围也不同,这些字符通过编码对应为唯一的二进制数后会形成一个表格.
想了解编码和字符集这种计算机基础知识点推荐看社区:黑马程序员--->软件测试板块,对话框可以领取课程大纲+视频+ppt+源码
在C语言程序中允许出现的字符集是什么?C语言程序中允许出现的字符集:
1) 拉丁字母
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
2) 十进制阿拉伯数字
0 1 2 3 4 5 6 7 8 9
3) 下面29个符号
! " # % & ' () * + , -. / :; < = > ? [ \ ] ^ _ { | } ~
【编码和字符集是什么 字符集怎么设置】4) 5种空白符
空格、水平制表符、垂直制表符、换行、换页
5) 基本运行字符集还包括四个不可打印的字符:
null字符(用做字符串终止符)、警报(alert)、退格(backspace)、回车(carriage return)
为了在字母和字符串中表示这些字符,输入反斜杠\加对应的转义序列(escape sequence)即可,例如,\0表示 null 字符(空字符),\a表示警报,\b表示退格,而\r表示回车 。
不同的C实现版本中,字符实际对应的数值(字符码)可能不同 。C语言本身仅规定了以下规则:


  • 基本字符集中的每个字符必须用一个字节(byte)表示 。

  • 空字符是一个字节,其所有的位(bit)都是0 。

  • 0 之后的每个十进制数字,编码都要依次比前者大 1 。


什么是字符集电脑中存储的永远是2进制码,而不是方块字,也不是英文字母 。
2进制码,每8位构成一个字节,代表了一个0-255的数字 。
那么这个数字代表什么呢?如果是字母的话,比如说65代表a,这个规则
就是一个字符集,著名的是ascii 。
如果换个其他国家的,比如说德文,那么65就代表另外的东西了,那就是另外的字符集 。
由于亚洲的文字无法用256个来表示,所以需要用双字节来表示,比如GB2312是一个字符集,同理,日文有日文的字符集 。
同样的网页,用不同的字符集来显示,会出现不同的样子,正因为,同样的2进制存储的信息,字符集不同,显示的内容也就不同了 。网页中有<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,这就是对字符集的指定,所以网页才能正确显示文字 。
什么是c语言的字符集c语言的字符集,就是c语言程序里允许用的字符 。

ascii
字符集一样.
java中字符集什么意思Java 中字符串在内核中使用 Unicode,也就是说每个字符 JVM 只记录它的 Unicode Code Point,只有在网络传输或保存到磁盘上时才需要把它转换成特定的字符集的编码,这个字符集就是把一个 Unicode Code Point 整数翻译成一串 byte[],因为在网络或磁盘上,字节是一个一个排列的,我们需要知道把高位字节排前面还是排后面并且容易推断出哪个哪个字节是一个字符的边界,这样才能把相关的几个字节还原成一个字符而不是把第2个字符的后面半数字节和第3个字符的前面半数的字节拼在一起出一个怪异的字符,我们以前在早期的电脑游戏中不支持双字节汉语时我们经常碰到这个问题,那就是先输入一个汉字,在内存中有2个字节,然后我们按一下 backspace 软件只删除一个字节,我们再输入一个汉字之后一共有3个字节的,这时我们用一个支持汉字的软件来查看这个文字可能是第1个剩下的字节和后面的字符的第1字节拼起来刚好又是另一个汉字,而剩下的第3个字节就不是有意义的绘图符号 。
当不需要把 JVM 内存中的字符传输到网络外或磁盘上或打印出来的时候,我们是不需要知道字符集的,在显示在图形界面上时JVM知道怎么把它们显示出来,现在的 Windows 操作系统同样也是 Unicode 内核的,也就是说我们只要说明 Unicode Code Point 它应该知道是什么字符,那么只剩下字体这边是否也是用 Unicode Code Point 来对应一个字符啦(这个我不确定,但估计也是),如果操作系统和字符这边也是按 Unicode Code Point 来对应,那么当我们不保存到磁盘或发送出网络时是完全不需要知道有字符集这回事的 。
下面这个例子中处理一个 Unicode 6.0 新标准中收录的汉字,你看到 UTF-8, UTF-16, GB18030 支持它们,但 GB2312 没有收录这个汉字,所以出个问号,也就是我们学说的乱码啦 。
什么是 Unicode,下面这样的表格就是 Unicode,而那些坐标数字就是 Code Point.
JDK 1.5 的 String 这个类支持 Unicode Code Point,也就是说能处理任何任意超出双字节的字符的处理,它是一些学术研究者(比如考古,古文献研究) 必须的功能,回想起来曾经的电报码翻译成电脑信息时由于输入法和字符集没有收录这些字没办法通过“输入一个数字得到这个字符的途径",大家都是先扫描一个用图片再在电脑中剪切出每个字符的小图片贴出来的 。记得在汉字处理时如果碰到冷僻字时它会超出2个字节,用 charAt() 这个是会出错的,因为 char 类型表示范围在 0 - 255 之间(2个字节),不能直接保存冷僻字,需要用2个 char 来表示一个字,因此 substring 的位置全是错误的,我们需要 offsetByCodePoints 重新计算一次 index 才能正确地 substring 。
public static void main(String[] args) throws IOException
{
int[] codePoints = new int[16];
for (int i = 0; i < 16; i++)
{
codePoints[i] = 0x20020 + i;
}
String a = new String(codePoints, 0, codePoints.length);
System.out.println("字符串:" + a);
System.out.println("字符串换算成 char[] 存储总长度是 :" + a.length());
System.out.println("codePointAt(7) 索引换算成 charAt 索引:" + a.offsetByCodePoints(1, 7));
String c = a.substring(a.offsetByCodePoints(1, 7), a.offsetByCodePoints(1, 8));
System.out.println("UTF-8for " + c + " is " + toString(c.getBytes("UTF-8")) + " ==> "
+ new String(c.getBytes("UTF-8"), "UTF-8"));
System.out.println("UTF-16for " + c + " is " + toString(c.getBytes("UTF-16")) + " ==> "
+ new String(c.getBytes("UTF-16"), "UTF-16"));
System.out.println("GB2312for " + c + " is " + toString(c.getBytes("GB2312")) + " ==> "
+ new String(c.getBytes("GB2312"), "GB2312"));
System.out.println("GB18030 for " + c + " is " + toString(c.getBytes("GB18030")) + " ==> "
+ new String(c.getBytes("GB18030"), "GB18030"));
}
private static String toString(byte[] input)
{
StringBuffer b = new StringBuffer();
b.append('[');
for (int i = 0, size = input.length; i < size; i++)
{
b.append(Integer.toString(input[i]));
if (i < size - 1)
b.append(',');
}
b.append(']');
return b.toString();
}
这个代码输出如下,为防止百度或者说你的电脑未安装支持冷僻字的字体,不能正确显示冷僻字,这里面用图片啦 。

字符集有哪些字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等 。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等 。计算机要准确的处理各种字符集文字,就需要进行字符编码,以便计算机能够识别和存储各种文字 。中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而计算机最初是按英语单字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础 。
关于字符集和字符集怎么设置的内容就分享到这儿!更多实用知识经验,尽在 www.hubeilong.com