我很难将UTF8日语字符转换为SJIS
用于转换的库:iconv lite
代码:
const iconv = require('iconv-lite')
const japanText = 'でんぱ組 出会いの歌26 カミソヤマ ユニ';
const buffer = iconv.encode(japanText, 'Shift_JIS');
fs.writeFileSync('convertedFile.txt', buffer)转换后的结果:
'て?んは?組出会いの歌26カミソヤマユニ‘
是否有人有同样的问题或有解决办法,请帮助我!
发布于 2022-08-11 12:46:41
您的.js文件似乎保存在正常化表D的UTF-8中。macOS上的文本编辑器通常使用这种类型的编码。
iconv-lite无法处理NFD,因此必须将japanText更改为NFC。有两个解决办法:
( A)用NFC保存.js文件
检查文本编辑器的功能。例如,如果使用Emacs,则可以使用ucs-normalize-NFC-region。如果您的文本编辑器没有这样的特性,您可以使用一个服务来转换NFC/NFD,比如:https://www.gesource.jp/weblog/?p=7635
( B)在代码中规范化到NFC
在将文本传递给normalize()之前,使用iconv-lite方法转换字符串,如下所示:
const fs = require('fs')
const iconv = require('iconv-lite')
const japanText = 'でんぱ組 出会いの歌26 カミソヤマ ユニ';
const buffer = iconv.encode(japanText.normalize("NFC"), 'Shift_JIS');
fs.writeFileSync('convertedFile.txt', buffer)https://stackoverflow.com/questions/72990189
复制相似问题