从我的数据库我得到以下字符串:
Johan Öbert
Run Code Online (Sandbox Code Playgroud)
应该说的是:
Johan Öbert
Run Code Online (Sandbox Code Playgroud)
我试着把它转换成utf-8,就像这样:
nameString.toString("utf8");
Run Code Online (Sandbox Code Playgroud)
但还是同样的问题.
有任何想法吗?
Rei*_*ica 35
我建议使用Buffer该类:
var someEncodedString = Buffer.from('someString', 'utf-8').toString();
Run Code Online (Sandbox Code Playgroud)
这避免了其他答案所需的任何不必要的依赖项,因为Buffer包含在node.js, 并且已经在全局范围中定义。
Jay*_*ram 29
使用npm 的utf8模块对字符串进行编码/解码.
安装:
npm install utf8
Run Code Online (Sandbox Code Playgroud)
在浏览器中:
<script src="utf8.js"></script>
Run Code Online (Sandbox Code Playgroud)
在Node.js中:
const utf8 = require('utf8');
Run Code Online (Sandbox Code Playgroud)
API:
编码:
utf8.encode(string)
Run Code Online (Sandbox Code Playgroud)
将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回字符串的UTF-8编码版本.如果输入字符串包含非标量值(即单独的代理项),则会引发错误.(如果您还需要能够编码非标量值,请改用WTF-8.)
// U+00A9 COPYRIGHT SIGN; see http://codepoints.net/U+00A9
utf8.encode('\xA9');
// ? '\xC2\xA9'
// U+10001 LINEAR B SYLLABLE B038 E; see http://codepoints.net/U+10001
utf8.encode('\uD800\uDC01');
// ? '\xF0\x90\x80\x81'
Run Code Online (Sandbox Code Playgroud)
解码:
utf8.decode(byteString)
Run Code Online (Sandbox Code Playgroud)
将任何给定的UTF-8编码字符串(byteString)解码为UTF-8,并返回字符串的UTF-8解码版本.检测到格式错误的UTF-8时会抛出错误.(如果您还需要能够解码编码的非标量值,请改用WTF-8.)
utf8.decode('\xC2\xA9');
// ? '\xA9'
utf8.decode('\xF0\x90\x80\x81');
// ? '\uD800\uDC01'
// ? U+10001 LINEAR B SYLLABLE B038 E
Run Code Online (Sandbox Code Playgroud)
小智 14
我有同样的问题,当我加载文本文件时fs.readFile(),我试图将编码设置为UTF8,它保持相同.我现在的解决方案是:
myString = JSON.parse( JSON.stringify( myString ) )
Run Code Online (Sandbox Code Playgroud)
在此之后,Ö被真正地解释为Ö.
当您想要更改编码时,您总是从一个到另一个.所以,你可能会去从Mac Roman到UTF-8或ASCII到UTF-8.
知道所需的输出编码与当前源编码一样重要.例如,如果你有Mac Roman和你解码它UTF-16,UTF-8你只会让它乱码.
如果您想了解有关编码的更多信息,本文将介绍很多细节:
使用node-iconv或iconv-lite的npm pacakge 编码应该允许您轻松指定所需的源和输出编码:
var resultBuffer = encoding.convert(nameString, 'ASCII', 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106817 次 |
| 最近记录: |