2017年8月

关注携程技术沙龙已经很长时间了,之前不少讲座针对机器学习的,不是特别理解。本期的互联网基础架构是我很感兴趣的topic,四个专题讲座收获颇多,有携程统一配置管理平台Apollo,去哪儿Qtrace全链路监控组件,新美大DBA的数据库分级分库分表介绍,唯品会的消息网关实践,距离上次活动已经两周了,今天抽时间整理下:-)

事实是携程官方整理的更好,真的是干货,在此贴下链接:

1. Qunar全链路跟踪及Debug
https://mp.weixin.qq.com/s/atger7wX2nmc2hVGMiDzSw

2、高吞吐消息网关的探索与思考
https://mp.weixin.qq.com/s/EIa4a3VPX9Onj1bt24hWjA

3、携程开源配置中心Apollo的设计与实现
https://mp.weixin.qq.com/s/HUmH_5n98CeV43Yfz51iHg

Python中的字符串编码是一个很让初学者费解头疼的问题,特别是遇到中文时相关处理经常抛出Exception。字符串到底以什么编码在Python内部进行处理,Python2.x中文编码如何安全的转换,Python 2.x与Python 3.x在编码方面的区别?本文接下来会一一进行讲解。

logo-python.png

1、字符串在Python内部的编码
在Python内部字符串都是以unicode编码进行处理,即源码文件中的字符串首先都会被decode成unicode编码的字符串,之后Python内部再进行处理,用代码显示表示如下:

unicode_str = input_str.decode('utf8')

以上是将uft8编码的字符串input_str转换为unicode,decode成功的前提是你得知道input_str的原始编码,比如这里是utf8,否则会抛出UnicodeDecodeError的异常。

2、Python源码字符串的编码
Python 2.x的默认编码格式是ascii,字符串在转换前均会decode成unicode。初学Python大家可能会编写如下的代码:

#!/usr/bin/python
s = '你好'
print s

会出现下面的异常:

SyntaxError: Non-ASCII character '\xe4'

这个是因为错误的将utf8编码的中文当成ascii解码。解决方法也很常规:在Python源码文件中声明编码格式,最常见的声明方式如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-

- 阅读剩余部分 -