6至12位数字和字母字母数字字符组成密码码怎么设置

在计算机中,所有东西都是0和1。字符其实是数字表示的。

一开始,只有ASCII码,用128个数字表示英文字母、数字、特殊字符和控制字符。

这对英文来说或许够了,但对其他语言来说就不够了。

所以每个国家每种语言都在指定自己的标准,产生『新的问题』是不同语言甚至同一语言的不容编码无法兼容。所以要统一字符编码。

Unicode是国际标准化组织制定的一套字符集编码的标准,它包含了所有文字的所有字符的编码。

Unicode规定用16 bit 也就是2个字节表示所有的字符。

对于ASCII里的那些「半角」字符,unicode包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。

由于半角英文符号只需要用到低8位,所以其高8位永远是0,因此这种方案在保存英文文本时会多浪费一倍的空间。

为解决浪费空间问题和网络传输问题,UTF-8产生了。UTF-8就是每次传输8个bit,而UTF-16就是每次16个bit。

UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。比如英文字母就用ascii就行了,也就是说UTF-8是兼容ASCII的。汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

从Unicode到UTF-8并不是直接的对应,而是要过一些算法和规则来转换。

GB2312 编码,可以表示6000多个常用汉字。

GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多生僻字,繁体字。

为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。

UTF-8 是『编码规则』
字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)

「总结」:广义的 Unicode 是一个标准,定义了一个字符集以及一系列的编码规则,即 Unicode 字符集和 UTF-8、UTF-16、UTF-32 等等编码规则……

对空间的高效利用,以及对ASCII兼容性,使得UTF-8成为了最主流的编码方式。

Unicode是一套字符集编码的标准,而UTF-8是遵循该标准的最主流的编码方式

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:

所以你看到很多网页的源码上会有类似的信息,表示该网页正是用的UTF-8编码。

python3以后,文本字符和二进制数据区分得更清晰,分别用 str 和 bytes 表示。字符str和bytes类型是2种不同的数据类型。

前面说的各种编码方式具体是指各种内容加载到内存或保存到文件或在网络传输时需要进行编码。
个人理解是字符串可以理解为我们人类看到的,bytes则是计算机能通过编码规则转换成01的数字。

字符串是以「字符」为单位进行处理的,bytes类型是以「字节」为单位处理的。

bytes数据类型在所有的操作和使用甚至内置方法上和字符串数据类型基本一样,也是不可变的序列对象。

python3中,所有字符串都是Unicode类型。(准确来说,这句话是不对的)

bytes对象只负责以二进制「字节序列」的形式记录所需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定。

Python3中,bytes通常用于网络数据传输、二进制图片和文件的保存等等。对于同一个字符串如果采用不同的编码方式生成bytes对象,就会形成不同的值。

从上述例子可以看出,Python3中,字符串是Unicode类型的,其实字符并不存在编码这一说,编码只存在于字符被存储或被传输时转换到字节,才有不同的编码方式。

所以str在转换/编码到bytes时需要指定一种需要的编码方式,在bytes转换/解码成str时需要指定正确的编码方式才能还原成正确的内容。

如果你有一些bytes二进制数据,而不知道它的编码方式,可以使用python的chardet这个包 如果你爬到的东西全是以u开头的编码,可以这样转换为中文:

r 是读模式,w写模式,wb是二进制读模式,rb是二进制写模式。

对于写模式,w只能写入str,wb只能写入bytes,所以要对字符串进行encode再以wb方式写入
对于读模式,如果文件写入方式是str,那么r和rb都可以,读出来分别是str和bytes
如果写入方式是bytes,那么wb肯定是可以的,w就只能读utf-8的,其他的编码就会出错。

如果使用open,那么什么模式写就用什么模式读最好;还可以使用codecs模块进行读写,读写时可以指定编码方式。

对于换行符,Unix系统里是\n;Windows系统里是\r\n;Mac系统里是r。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个\r

文件在转移时可以在编辑器如notepad++里转换下格式,或使用工具转换如unix2dos,dos2unix等。

以二进制方式写入和读不会变。所以二进制时可以跨平台的。

文件无论以什么编码保存在硬盘上,都是二进制存储。而对于图片,视频等,由于不是字符串,只能以二进制方式存储在硬盘上。

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

我要回帖

更多关于 字母数字字符组成密码 的文章

 

随机推荐