如何处理 iOS 节点中的字符串字符解析(日语字符)?
How to handle iOS string characters parsing in node (Japanese characters)?
我 运行 遇到将 ios 字符串文件(英语 -> 日语)上传到节点服务器进行解析的问题。
该文件是 UTF-16LE,但当解析为字符串时,字符编码会丢失字符。这可能与 express 使用 utf8 读取请求文件数据导致文件数据格式错误有关。
当文件以 atom/sublime w/ utf16 编码加载时效果很好
当文件以 utf8 格式加载时,事情就崩溃了。
任何帮助都会很棒。
经过一些研究和挖掘。
利用 npm 模块 iconv-lite 解析文件缓冲区应该:
1) 将缓冲区解析为 utf16le
2) 向下转换为 utf8
3) 转换为字符串。
if (encoding === 'utf-16le') {
str = iconv.decode(buffer, 'utf16le');
body = iconv.encode(str, 'utf8').toString();
} else if (encoding === 'utf-16be') {
str = iconv.decode(buffer, 'utf16be');
body = iconv.encode(str, 'utf8').toString();
} else {
body = Buffer.concat(file.data).toString();
}
我 运行 遇到将 ios 字符串文件(英语 -> 日语)上传到节点服务器进行解析的问题。
该文件是 UTF-16LE,但当解析为字符串时,字符编码会丢失字符。这可能与 express 使用 utf8 读取请求文件数据导致文件数据格式错误有关。
当文件以 atom/sublime w/ utf16 编码加载时效果很好 当文件以 utf8 格式加载时,事情就崩溃了。
任何帮助都会很棒。
经过一些研究和挖掘。
利用 npm 模块 iconv-lite 解析文件缓冲区应该:
1) 将缓冲区解析为 utf16le
2) 向下转换为 utf8
3) 转换为字符串。
if (encoding === 'utf-16le') {
str = iconv.decode(buffer, 'utf16le');
body = iconv.encode(str, 'utf8').toString();
} else if (encoding === 'utf-16be') {
str = iconv.decode(buffer, 'utf16be');
body = iconv.encode(str, 'utf8').toString();
} else {
body = Buffer.concat(file.data).toString();
}