如何编码/解码像git一样的unicode?

时间:2017-02-16 08:46:37

标签: node.js git perl unicode utf-8

core.quotepath = on

时的git

魔神転生2.CT将转换为\351\255\224\347\245\236\350\273\242\347\224\2372.CT

如何在perl或nodejs上解码/编码?

为什么我要这样做?

我有一个旧的perl脚本git

但是当我使用core.quotepath = off

我的perl脚本无法处理unicode

它将变为擳?頠Y?2.CT矇簫?癟瞼?癡罈瞽癟??2.CT

在nodejs utf8运行良好,但不知何故,当我执行一些git cmd时它会失败

喜欢git commit -m . --dry-run --short

this is my old perl script

2 个答案:

答案 0 :(得分:0)

node.js Unicode

有一个很棒的插件
# debian
sudo apt-get install unicode-data # optional
# gentoo
sudo emerge unicode-data # optional

npm install unicode

答案 1 :(得分:0)

s{\\(\d{3})}{ chr(oct($1)) }eg。结果是UTF-8。如果您需要Unicode代码点,请使用decode_utf8

您可能还需要处理其他转义序列。

my %escapes = (
   "n"  => "\n",
   "r"  => "\r",
   # ...
);

s{\\(?:([0-7]{3})|(\W)|(\w))}{
   defined($1) ? chr(oct($1)) :
   defined($2) ? $2 :
   $escapes{$3} // do { warn("Unrecognized escapes \\$3"); "\\$3" }
}seg;