https://www.npmjs.com/package/encoding-japanese
こちらのライブりを使って、変数に格納されたSJISの文字列をUTF8の文字列に変換しようとしたのですが、うまくできませんでした...。
js
1let text = 'あ' // 実際textはエクセルからインポートされた文字列でSJISです 2text = Encoding.convert(text, { to: 'UTF8', from: 'SJIS', type: 'string' })
はじめこれでできるのかなと思ったのですが、"?"が返ってきます。
こちらのページでは文字列は
var utf8String = 'ã\u0081\u0093ã\u0082\u0093ã\u0081«ã\u0081¡ã\u0081¯';
こんな風になってます。
これは一体どういった形式なのでしょうか。
textをこの形式に一旦変換してからEncoding.convertしてみようかなと思うのですが、それは可能なのでしょうか。
追記
js
1 2// textはSJISの"あ" 3 4text = convertSjisStrToUtf8Str(text) // => [63] 5 6const convertSjisStrToUtf8Str = (sjisStr) => { 7 let ary = [] 8 for (let index = 0; index < sjisStr.length; index++) { 9 ary.push(sjisStr.charCodeAt(index)) 10 } 11 return Encoding.convert(ary, 'UNICODE', 'SJIS') 12}
追記
SJISのファイルの作り方
js
1// 参考サイト 2// https://photo-tea.com/p/17/nodejs-write-excel-tsv-csv/ 3// fsじゃなくてfs-extraを使ってます 4import * as fs from 'fs-extra' 5import iconv from 'iconv-lite' 6let csvStr = 'あ' 7fs.writeFileSync(outputFilePath, '') 8let fd = fs.openSync(outputFilePath, 'w') 9let buf = iconv.encode(csvStr, 'Shift_JIS') 10await fs.writeSync(fd, buf, 0, buf.length)










回答1件
あなたの回答
tips
プレビュー