实现字符和编码的互转
在做项目时,有时候需要查看字符的编码来debug,但网上的编码转换网站的都是假的 并不是真正转换,所以自己实现字符互转的一个脚本。只是写另一个初版,后续有时间可以写完整,做成一个小工具。
直接上代码
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import sys
import re
#字符转16进制编码
def char2code_encode(str1,char_type) :
temp = str1.encode(char_type)
ret_str = str(temp)
ret = re.findall("^b'(.*)'$",ret_str)[0]
# print(ret)
if len(re.findall(r"\\u",ret)):
ret = re.sub(r"\\u",r"u",ret)
else:
ret = ""
for i in temp:
ret += "\\x%02x"%i
return ret
#16进制编码转字符
def code2char_decode(str1,char_type) :
buf = []
if len(re.findall(r"\\u",str1)):
for i in str1:
buf.append(ord(i))
else:
temp_ret = str1.split("\\x")[1:]
for i in temp_ret:
buf.append(int(i,16))
# print(buf)
b = bytes(buf)
# print(b)
ret = b.decode(char_type)
return ret
使用例子
lange_code_type = [
"utf-8",
"gb2312",
"gbk",
"utf-16",#unicode
]
for i in lange_code_type:
print(i)
temp = char2code_encode("a哈哈哈",i)
print("--->code :",temp)
temp = code2char_decode(temp,i)
print("--->char :",temp)
print("")
结果
# utf-8
# --->code : \x61\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88
# --->char : a哈哈哈
# gb2312
# --->code : \x61\xb9\xfe\xb9\xfe\xb9\xfe
# --->char : a哈哈哈
# gbk
# --->code : \x61\xb9\xfe\xb9\xfe\xb9\xfe
# --->char : a哈哈哈
# utf-16
# --->code : \xff\xfe\x61\x00\xc8\x54\xc8\x54\xc8\x54
# --->char : a哈哈哈