Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

练习题与扩展阅读

练习题

基础题

  1. 请简述ASCII、GBK、UTF-8三种编码的区别和各自的优缺点。
  2. 计算字符串“Hello 世界!🌍“在以下编码中分别占用多少字节:
    • ASCII编码
    • GBK编码
    • UTF-8编码
    • UTF-16编码
  3. 乱码产生的根本原因是什么?列举3种常见的乱码场景和解决方案。
  4. 为什么UTF-8编码的文件不建议带BOM?BOM会带来什么问题?

实操题

  1. 编写一个程序,读取一个GBK编码的文本文件,将其转换为UTF-8编码保存。
  2. 写一个正则表达式,匹配所有符合邮箱格式的字符串,并用它提取一段文本中的所有邮箱地址。
  3. 遇到一个中文网页显示乱码,请列出你的排查步骤和解决思路。
  4. 写一个正则表达式,验证密码强度:必须包含大小写字母和数字,长度在8-16位之间。

思考题

  1. 既然UTF-8已经是事实标准了,为什么还会有GBK等编码存在?我们应该在什么情况下使用非UTF-8编码?
  2. 为什么MySQL的utf8不是真正的UTF-8?使用utf8mb4有什么注意事项?
  3. 编程中字符串处理时,“字节长度“和“字符长度“有什么区别?哪些场景下需要区分这两个概念?

扩展阅读

书籍推荐

  1. 《Unicode Explained》

    • 全面深入讲解Unicode标准的方方面面
    • 适合想要深入理解Unicode原理的开发者
  2. 《Mastering Regular Expressions》(精通正则表达式)

    • 正则表达式领域的经典著作
    • 从基础到高级,全面讲解正则表达式的原理和应用
    • 适合想要系统学习正则的开发者
  3. 《编码:隐匿在计算机软硬件背后的语言》

    • 第2章的内容和本书的编码部分可以互相印证
    • 从更底层的角度讲解编码的本质

在线资源

  1. Unicode官方网站

    • Unicode标准的官方文档,最权威的资料来源
    • 可以查询所有字符的码位和属性
  2. UTF-8 Everywhere

    • 推广UTF-8编码的网站,讲解了为什么应该统一使用UTF-8
    • 包含很多最佳实践和常见问题解答
  3. Regex101

    • 在线正则表达式调试工具
    • 支持多种语言的正则引擎,可视化显示匹配过程
    • 学习和调试正则的必备工具
  4. 正则表达式30分钟入门教程

    • 国内非常经典的正则入门教程
    • 通俗易懂,适合零基础快速入门

工具推荐

  1. chardet / cchardet:Python库,自动检测文本的编码
  2. iconv:命令行工具,进行编码转换
  3. hexdump / xxd:命令行工具,查看文件的二进制内容
  4. Notepad++ / VS Code:文本编辑器,支持查看和转换文件编码
  5. Wireshark:网络抓包工具,可以查看网络传输的原始字节

参考答案

练习题的参考答案可以在附录/练习题参考答案.md中找到。建议先独立思考完成,再查看答案。