字符编码

Python-05-编码规范 PEP8

巧了我就是萌 提交于 2020-01-31 21:07:27
  这篇文档说明了Python主要发行版中标准库代码所遵守的规范。很多项目都有自己的一套风格指南。若和本指南有任何冲突,应该优先考虑其项目相关的那套指南。 文章目录 代码布局(Code Lay-Out) 缩进(Indentation) 每行最大长度(Maximum Line Length) 二元运算符之前还是之后换行?(Should a line break before or after a binary operator?) 空行(Blank Line) 源文件编码(Source File Encoding) 模块引用(Imports) 模块级的双下划线命名(Module level dunder names) 字符串引用(String Quotes) 表达式和语句中的空格(Whitespace In Expressions And Statements) 一些痛点(Pet Peeves) 其他建议(Other Recommendations) 何时在末尾加逗号(When to use trailing commas) 注释(Comments) 块注释(Block Comments) 行内注释(Inline Comments) 文档字符串(Documentation Strings) 命名约定(Naming Conventions) 首要原则(Overriding

python中编码问题

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-31 16:26:22
写在前面: 本文是很基础的东西,这些基础的东西有一个特点,看一遍会了,但其中很多精髓其实被忽略了,建议你货比三家,细细品尝编码之美。还有,这文章是我熬夜写的,可能有错,请批判性阅读,谢谢。 0x00:为社么会出现多种编码? 相信计算机专业的都知道,所有的数据(文本,音频,视频等等)在计算机内部都是以二进制形式来表示的。而计算机内部为什么采用二进制则是由硬件决定的(计算机采用了具有两种稳定状态的二值电路)。这样,就引出一个问题: 我们人类不适合直接看二进制。 因此,需要用一种方法,将二进制转为我们能看懂的东西。 编码就应运而生了。 0x01:编码发展历史 第一阶段: 在计算机中,所有的数据只可能是0或者1(用高电平和低电平分别表示1和0),那么我们通常看到的字符也就只能用0和1来表示呀。于是科学家们(这里指的是美国的科学家)就想出一个办法,把一个特定的数字对应一个特定的字母进行存储和传输,比如我需要存储字母a,那么我存入一个数字97(即在计算机中存入二进制(01100001),这个过程叫做编码(encode),而我们在读取数据的时候,当遇到97时,我们就让计算机显示字母a,这个过程叫做解码(decode)。 这里你应该知道: 计算机看懂的东西我们看不懂,我们看懂的东西,计算机看不懂。 把计算机看懂的东西(二进制(01100001))变成我们看懂的东西(数字97,也就是a)

jdbc mysql写入中文乱码解决

爷,独闯天下 提交于 2020-01-31 10:07:04
一. 问题 数据库编码:utf8 mysql> create database dbnameDEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 表编码:utf8 drop table if exists `test`; create table `test` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(50) default '', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8; jdbc url: url: jdbc:mysql://host:port/dbname 数据库和数据库表都已经使用了utf8编码,但是插入中文数据时仍然乱码。 二. 原因 在jdbc中连接mysql时,jdbc url参数中有一个属性characterEncoding控制字符串编码,该值默认为:autodetect。 需要明确设置为 utf8 ,可解决问题。 MySQL文档解释如下,详见: https://dev.mysql.com/doc

mysql字符集

前提是你 提交于 2020-01-30 13:10:33
先了解几个定义 1、计算机只能存储二进制数据,要想在计算机上保存二进制的数据,就要有对应的字符和二进制的映射。 2、将一个字符映射成一个二进制的数据较编码,返回来叫解码。 3、这时候会产生一些字符集,字符集:描述某个字符范围的编码规则。 下面我们自定义一个字符集(我们假想有这样的一个) 字符集名称:utf-ab; 字符只有: 'a' 'b' ; 编码规则: 'a' -> 00000001 (十六进制:0x01) 'b' -> 00000010 (十六进制:0x02) 那么根据我们自定义的这个字符集的编码规则 'ab'字符串就用 0000000100000010 来表示了。 下面说一些重要的字符集: ASCII 字符集:共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码; ISO 8859-1 字符集:共收录256个字符,是在 ASCII 字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字节来进行编码; GB2312 字符集:收录了汉字以及拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母。其中收录汉字6763个,其他文字符号682个。同时这种字符集又兼容 ASCII 字符集; GBK 字符集: GBK 字符集只是在收录字符范围上对 GB2312 字符集作了扩充

Python 简单入门指北(一)

↘锁芯ラ 提交于 2020-01-30 08:50:45
Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫。但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑科技。本文主要针对的读者是: 毫无 Python 经验的小白 有一些简单 Python 经验,但只会复制粘贴代码,不知其所以然的读者 觉得单独一篇文章太琐碎,质量没保证,却没空读完一本书,但又想对 Python 有全面了解的读者 当然, 用一篇文章来讲完某个语言是不可能的事情,我希望读完本文的读者可以: 对 Python 的整体知识结构形成初步的概念 了解 Python 特有的知识点,比如装饰器、上下文、生成器等等,不仅会写 Demo,还对背后的原理有一定了解 避免 C++/Java 等风格的 Python 代码,能够写出地道的 Python 代码 能够熟练的使用 Python 编写脚本实现日常的简单需求,能够维护小型 Python 项目,能够阅读较复杂的 Python 源码 如果以上介绍符合你对自己的定位,在开始阅读前,还需要明确几点: 本文不会只介绍用法,那样太肤浅 本文不会深入介绍某个知识点,比如分析源码等,那样太啰嗦,我希望做一名引路人,描述各个知识点的概貌并略作引申,为读者指出下一步的研究方向 代码注释非常重要,一定要看,几乎所有的代码段都可以执行,强烈建议手敲一遍! 0.

Java IO深入

ぃ、小莉子 提交于 2020-01-30 00:25:38
IO体系 Java IO 体系种类繁多,感觉很复杂,但其实是 IO 涉及的因素太多了。在进行介绍的时候添加了设计模式等的使用,会让你感觉更加难以理解难以使用这些IO类,在此对java的IO做了一个详细的总结。 IO 类设计出来,肯定是为了解决 IO 相关的操作的,想一想哪里会有 IO 操作?网络、磁盘。网络操作相关的类是在 java.net 包下,不在本文的总结范围内。提到磁盘,你可能会想到文件,文件操作在 IO 中是比较典型的操作。在 Java 中引入了 “流” 的概念,它表示任何有能力产生数据源或有能力接收数据源的对象。数据源可以想象成水源,海水、河水、湖水、一杯水等等。数据传输可以想象为水的运输,古代有用桶运水,用竹管运水的,现在有钢管运水,不同的运输方式对应不同的运输特性。 从数据来源或者说是操作对象角度看,IO 类可以分为: 1、文件(file):FileInputStream、FileOutputStream、FileReader、FileWriter 2、数组([]): 2.1、字节数组(byte[]):ByteArrayInputStream、ByteArrayOutputStream 2.2、字符数组(char[]):CharArrayReader、CharArrayWriter 3、管道操作:PipedInputStream、PipedOutputStream

安装和运行(含虚拟机)

让人想犯罪 __ 提交于 2020-01-29 16:28:00
官方的所有版本下载页面根本找不到,最后看热心网友的文章才找到的, 入口 ,选择的是5.7.27版本 window安装 从入口地址选好版本下载zip压缩包 配置 解压后把bin文件夹设置成环境变量,然后在一级文件里新增一个my.ini,和新建一个data文件夹,配置内容如下 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\\mysql-5.7.27-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\\mysql-5.7.27-winx64\\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB mysqld --initialize-insecure # 生成服务 mysqld -install # 删除服务 sc delete mysql # 启动 net start mysql # 登陆 mysql -u root -p # 需要密码,默认是空

04 XML

…衆ロ難τιáo~ 提交于 2020-01-29 04:48:11
文章目录 1. xml 1.1 作用 1.2 定义 1.3 编码问题 1.4 元素定义 1.5 注释 1.6 非法字符 1.7 CDATA区 1.8 解析 1.9 约束 1.9.1 DTD方式 1.9.2 Schema方式 1. xml 1.1 作用 保存数据 配置文件 数据传输的载体 1.2 定义 <!--version表示声明用什么版本解释器去执行,encoding用什么编码,standalone是no代表有依赖别文档--> <?xml version="1.0" encoding="utf-8" standalone="no" ?> < stu id = " 10086 " > < name > liyang </ name > < age > 18 </ age > </ stu > 1.3 编码问题 我们本地电脑上的文件编码是GBK。这就去代表着我们写完文件后,文件是以GBK编码的形式存储在电脑上的,如果这里我们指定我们的XML文件的编码是UTF8就肯定会出现乱码问题了。要想不出现乱码问题,就需要把我们的XML文件的编码改成和我们本地电脑上的编码一致。为了通用建议使用UTF-8 1.4 元素定义 文档声明下的第一个元素叫做根元素(根标签) 标签一般成对出现。但是也有例外,即空标签,一般配合属性一起使用 1.5 注释 <!-- --> 1.6 非法字符 < 和 &

Python2和3字符编码的区别

戏子无情 提交于 2020-01-28 17:46:58
Python2和3字符编码的区别 一、字符编码应用之Python 1.1 执行Python程序的三个阶段 Python test.py (再强调一遍,执行test.py的第一步,一定是先将文件内容从硬盘读入到内存中) test.py文件内容以gbk格式保存的,内容为: [ 阶段一:启动Python解释器 阶段二:Python解释器此时就是一个文本编辑器,负责打开文件test.py,即从硬盘中读取test.py的内容到内存中 此时,Python解释器会读取test.py的第一行内容, #coding:utf-8 或 #-*-coding:utf-8-*- ,以此决定以什么编码格式将代码读入内存,这一行就是设定Python解释器这个软件使用的编码格式。 可以用sys.getdefaultencoding()查看,如果不在Python文件指定头信息 #-*-coding:utf-8-*- ,那就使用Python默认的编码格式。 import sys sys.getdefaultencoding() Copy'utf-8' Python2中默认使用ascii,Python3中默认使用utf-8。 改正:在test.py指定文件头,字符编码一定要为gbk。即更正为 #coding:gbk 你好啊 阶段三:读取已经加载到内存的代码(Unicode编码格式),然后执行

ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8

蹲街弑〆低调 提交于 2020-01-28 17:40:56
ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;1.ENGINE=INNODB 表示将数据库的引擎设置为InnoDB,从MySQL 5.6开始默认使用该引擎。 2.AUTO_INCREMENT=10 表示自动增长的起始值为10 3.DEFAULT CHARSET=utf8表示设置数据库的默认字符集为utf8下面的问答是网上借鉴的 问:ENGINE=InnoDB不是默认就是这个引擎吗? ——是的,如果不写也是ok,就会走默认的,在这里写上是因为可以很清楚的看到这个建表语句用了哪些,而且在创建表的时候,写上也是一个很好的习惯 问:AUTO_INCREMENT=22,它不是自增的吗?为什么还要设数字? ——这个是自增的,在这里设置数字的意思是想要让这条语句在增长的时候,从22开始自增。 问:utf8不是已经在my.ini里设置过了? ——这个虽然在my.ini设置过了,但设置的是mysql的的语言编码,而这里创建的时候不设置,就会出现乱码问题,二者的作用域是不一样的,在创建表单的时候,这个charset会作用到这个表上,他代表mysql简历数据库数据表时设定字符集为utf-8 来源: https://www.cnblogs.com/rzkwz/p/12238372.html