新唐MCU技术
直播中

mintsy

9年用户 1573经验值
擅长:MEMS/传感技术
私信 关注
[问答]

如何使用 UTF-8 编码?

如何使用 UTF-8 编码?

回帖(1)

贾大林

2025-9-8 17:51:24

使用UTF-8编码主要涉及以下几个方面,以下是详细说明:




一、什么是UTF-8?


UTF-8是Unicode字符集的一种变长编码方式



  • 兼容ASCII(0-127的字符占用1字节)

  • 非ASCII字符(如中文、表情符号)占用2~4字节

  • 全球通用,支持几乎所有语言的字符




二、如何在不同场景使用UTF-8?


1. 文本文件保存为UTF-8




  • Windows记事本

    保存时选择“另存为” → 编码选择 UTF-8(注意:避免“带BOM的UTF-8”)。




  • VS Code / Sublime等编辑器

    右下角点击当前编码(如GBK)→ 选择 "Save with UTF-8"




  • Linux命令行

    iconv转换编码:  


    iconv -f GBK -t UTF-8 input.txt > output.txt





2. 编程中处理UTF-8




  • Python 3

    字符串默认使用Unicode,读写文件时指定encoding='utf-8'


    with open("file.txt", "r", encoding="utf-8") as f:
      text = f.read()



  • Java

    读写文件时指定StandardCharsets.UTF_8


    Files.readString(Paths.get("file.txt"), StandardCharsets.UTF_8);



  • HTML/CSS

    在文件头部声明:





  • 数据库(如MySQL)

    建表时指定字符集:


    CREATE TABLE table1 (
    id INT,
    name VARCHAR(100) CHARSET utf8mb4  -- 推荐utf8mb4(完整UTF-8)
    );





3. 数据传输中使用UTF-8




  • HTTP协议

    在响应头中指定:


    Content-Type: text/html; charset=utf-8



  • API请求(如JSON)

    设置Header:


    Content-Type: application/json; charset=utf-8



  • 命令行乱码修复

    Linux/Mac终端执行:


    export LANG="en_US.UTF-8"  # 临时生效





4. 检测当前文件编码



  • Linux/Mac:  
    file -i filename.txt  # 输出charset=utf-8

  • Python
    import chardet
    with open("file.txt", "rb") as f:
      result = chardet.detect(f.read())
      print(result['encoding'])  # 输出如utf-8




三、注意事项



  1. BOM问题

    UTF-8的BOM(字节序标记EF BB BF)可能引发兼容性问题,现代系统通常无需BOM

  2. 乱码处理

    出现乱码时,检查源头编码是否一致(文件、数据库、代码、传输协议)。

  3. 完整支持

    数据库建议用utf8mb4(MySQL的utf8只支持3字节,emoji会失败)。




四、为什么用UTF-8?



  • 兼容性:无缝支持ASCII

  • 国际化:覆盖全球所有语言

  • 通用性:互联网、操作系统、编程语言的默认标准


通过以上方法,可确保从文件存储、代码处理到网络传输全链路使用UTF-8编码。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分