ZB-034-02字符串和编码

字符串和编码

  • ⼀个⼈类世界中的字符如何转换成计算机世界中的字节? 如 “一”
    • ⼀定在某个神奇的⻆落存在⼀种映射关系
    • 我们称这种映射关系为 字符集
    • 将⼈类能看懂的字符变成字节,叫做 编码
    • 将字节变成⼈类能看懂的字符,叫做 解码

字符集:Unicode

  • 每个数字代表⼀个字符,叫做“码点”(code point)
  • 那我能不能直接拿来变成字节啊?
    • 可以……但是没必要。
  • 最常⻅的两种编码⽅案:
    • UTF-16:Java程序内部的存储⽅法
    • UTF-8 (发明者是 ken)
      • Mac/Linux默认编码是UTF-8
      • Windows默认的中⽂编码是GBK
        • 为什么 windows 不用 UTF-8呢?
        • 答案是: windows 在使用时 UTF-8还没发明
      • 如果没有意外,把你所有的编码⽅案都改成UTF-8(支持度最好的解决方案)

pom.xml 里的字符集设置

1
2
3
4
5
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Google 小技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 只在 当前站内搜索
site:github.com


# 排除 某站的内容
java -csdn

# 搜索 内容必须是连在一起的
"java string"

# 搜指定格式
重构改善现有代码 filetype:pdf

# 常用数据
名单 filetype:xls

推荐读物

  • 《code》编码

练习