Python3如何将非ASCII字符替换为对应的Unicode表示值
实现思路
核心逻辑为遍历字符串内所有字符,ASCII范围内的字符直接保留,超出ASCII范围的特殊字符转换为\u加4位十六进制Unicode编码的格式即可。
常见编程语言实现示例
Python
可以借助内置json模块快速实现,也可以手动写转换逻辑适配自定义需求:
import json raw_str = "Hello–World" # 方法1:调用json序列化自动转义非ASCII字符 res = json.dumps(raw_str).strip('"') print(res) # 输出结果:Hello\u2013World # 方法2:手动实现转换逻辑 def unicode_escape_convert(s): output = [] for char in s: code = ord(char) if code > 127: output.append(f"\\u{code:04x}") else: output.append(char) return "".join(output) print(unicode_escape_convert(raw_str)) # 输出结果:Hello\u2013World
如果需要处理Unicode码点超过0xFFFF的字符(比如emoji、生僻汉字),可以根据需求调整逻辑,输出\U开头的8位编码或者UTF-16代理对格式即可。
JavaScript
const rawStr = "Hello–World"; function unicodeEscapeConvert(str) { return str.replace(/[^\x00-\x7F]/g, char => { const code = char.charCodeAt(0).toString(16) return `\\u${code.padStart(4, '0')}` }) } console.log(unicodeEscapeConvert(rawStr)) // 输出结果:Hello\u2013World
Java
可以直接使用Apache Commons Lang库的工具类,也可以自己实现转换逻辑:
import org.apache.commons.lang3.StringEscapeUtils; public class UnicodeConvertDemo { public static void main(String[] args) { String rawStr = "Hello–World"; String res = StringEscapeUtils.escapeJava(rawStr); System.out.println(res); // 输出结果:Hello\u2013World } }
内容的提问来源于stack exchange,提问作者fadedj
相关产品推荐
相关产品推荐

