如何从 Java ASCII 属性转换为 UTF8 (Java 9) 属性

问题描述 投票:0回答:1

我有一个包含 unicode 转义符 (\u0123) 的 Java 属性文件,我需要将其转换为新的 Java 9 UTF-8 格式。我尝试了 iconv 和 uconv(来自 ICU)的多种选项,但无法获得良好的结果。询问聊天 GPT 也没有产生完全有效的解决方案。

java utf-8 properties
1个回答
0
投票
cat messages.properties | awk -v RS='\\\\u[0-9a-fA-F]{4}' '{ORS=""; print $0; printf "%c",strtonum("0x"substr(RT,3)) } END {print ""}'

RS='\\\u[0-9a-fA-F]{4}'
将记录分隔符设置为具有匹配 unicode 转义的正则表达式

ORS=""
确保打印 $0 时记录分隔符不会被任何内容替换

print $0
打印记录分隔符之前的字符串

printf "%c",strtonum("0x"substr(RT,3))
首先从 \u0123 (substr 部分)中提取十六进制值,然后在 strtonum 前面添加 '0x' 将其解释为十六进制,将其转换为数字 (strtonum) 并将其打印为字符代码 (printf "%c ”)。

END {print ""}
是无操作,但需要关闭前一个 {} 块

© www.soinside.com 2019 - 2024. All rights reserved.