字符编码工具 - CharsetUtil

由来

字符编码问题是开发中的常见坑,尤其是在中文环境下。CharsetUtil 提供编码相关的便捷方法。

常量

from hutool import CharsetUtil

CharsetUtil.UTF_8       # "utf-8"
CharsetUtil.GBK         # "gbk"
CharsetUtil.ISO_8859_1  # "iso-8859-1"

方法

# 编码转换
data = CharsetUtil.convert("你好".encode("utf-8"), "utf-8", "gbk")
text = CharsetUtil.convert(data, "gbk", "utf-8")  # "你好"

# 字符串形式的编码转换
result = CharsetUtil.convert("你好", "utf-8", "gbk")

# 获取默认编码
CharsetUtil.default_charset()  # "utf-8"

# 清理 BOM
clean = CharsetUtil.clean_bom("内容")  # "内容"

# 清理无效控制字符
CharsetUtil.clean_invalid("hello\x00world")  # "helloworld"
CharsetUtil.clean_invalid("a\x07b\x08c")     # "abc"(清除 BEL/BS)
CharsetUtil.clean_invalid("a\tb\nc")          # "a\tb\nc"(保留 TAB/LF/CR)

# 解析字符集名称
CharsetUtil.parse("GBK")          # "gbk"
CharsetUtil.parse(None)           # "utf-8"

# 系统字符集
CharsetUtil.system_charset_name() # "utf-8"

# 检测字节数据字符集(基于 BOM)
CharsetUtil.detect_charset(b"\xef\xbb\xbfhello")  # "utf-8-sig"

# 转换文件字符集
CharsetUtil.convert_file("src.txt", "dest.txt", "gbk", "utf-8")