首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs图标-lite转换错误的移位JIS字符

Nodejs图标-lite转换错误的移位JIS字符
EN

Stack Overflow用户
提问于 2022-07-15 07:04:59
回答 1查看 278关注 0票数 0

我很难将UTF8日语字符转换为SJIS

用于转换的库:iconv lite

代码:

代码语言:javascript
复制
const iconv = require('iconv-lite')
const japanText = 'でんぱ組 出会いの歌26 カミソヤマ ユニ';
const buffer = iconv.encode(japanText, 'Shift_JIS');
fs.writeFileSync('convertedFile.txt', buffer)

转换后的结果:

'て?んは?組出会いの歌26カミソヤマユニ‘

是否有人有同样的问题或有解决办法,请帮助我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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方法转换字符串,如下所示:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72990189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档