将UTF-8数据转换为适当的字符串格式
Convert UTF-8 data into the proper string format
如果我通过套接字接收UTF-8字符串(或者通过任何外部源),我希望将其作为正确解析的字符串对象。下面的代码显示了我所说的
var str='21'r'nJust a demo string 'xC3'xA4'xC3'xA8-should not be anymore parsed';
// Find CRLF
var i=str.indexOf(''r'n');
// Parse size up until CRLF
var x=parseInt(str.slice(0, i));
// Read size bytes
var s=str.substr(i+2, x)
console.log(s);
这段代码应该输出
只是一个演示字符串äè
但是由于UTF-8数据没有被正确解析,它只解析到第一个Unicode字符
只是一个演示字符串ä
有人知道如何正确转换这个吗?
似乎你可以使用这个decodeURIComponent(escape(str))
:
var badstr='21'r'nJust a demo string 'xC3'xA4'xC3'xA8-should not be anymore parsed';
var str=decodeURIComponent(escape(badstr));
// Find CRLF
var i=str.indexOf(''r'n');
// Parse size up until CRLF
var x=parseInt(str.slice(0, i));
// Read size bytes
var s=str.substr(i+2, x)
console.log(s);
顺便说一句,当您混合使用UTF-8和其他类型的编码时,就会出现这种问题。你也应该检查一下
你应该使用npm上提供的utf8.js。
var utf8 = require('utf8');
var encoded = '21'r'nJust a demo string 'xC3'xA4'xC3'xA8-foo bar baz';
var decoded = utf8.decode(encoded);
console.log(decoded);
相关文章:
- 由于布尔值的变化,Django视图中的字符串格式不正确
- JSON字符串格式错误
- Mysql日期时间字符串格式为angularjs中的可读日期
- 挖空 HTML 绑定和字符串格式的 HTML 长度
- 通过javascript将带有日期的字符串格式化为另一种格式
- 将GeoJson字符串格式设置为虚线
- 将JSON转换为特定的字符串格式
- 通过 jQuery 验证日期字符串格式的最佳方法
- 如何以 html 文本的字符串格式放置变量值
- 如何将javascript字符串格式转换为日期
- 使用 javascript 将 ISO 8601 日期字符串格式化为凌晨 0:00
- 如何将 base64 编码的字符串格式化为 x 个字符的可 jslinable 行
- NodeJS 字符串格式,如 Python
- 将字符串格式化为时间格式,如 hh:mm
- 如何获取 g 元素的字符串格式的 svg
- 读取具有“'”的 JSON 字符串(格式不正确?
- 在 JavaScript/Lodash 中将字符串格式化为电话号码
- 如何使用 Angular “数字”过滤器键入时在输入字段中设置带有千和小数分隔符的字符串格式
- JSON 字符串格式
- 是Javascript的一种特殊字符串格式