Rob*_*cks 3 javascript ascii utf-8 character-encoding
我需要将大型UTF-8字符串转换为ASCII.它应该是可逆的,理想情况下是快速/轻量级算法.
我怎样才能做到这一点?我需要源代码(使用循环)或JavaScript代码.(不应该依赖于任何平台/框架/库)
编辑:据我所知,ASCII表示看起来不正确,并且比UTF-8对应物更大(以字节为单位),因为它是UTF-8原始的编码形式.
Nea*_*all 10
任何可逆转换为ASCII的UTF-8字符串都是ASCII.
UTF-8可以表示任何unicode字符 - ASCII不能.
ffo*_*orw 10
您可以使用仅限ASCII版本的Douglas Crockford的json2.js引用函数.看起来像这样:
var escapable = /[\\\"\x00-\x1f\x7f-\uffff]/g,
meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
};
function quote(string) {
// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.
escapable.lastIndex = 0;
return escapable.test(string) ?
'"' + string.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string' ? c :
'\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' :
'"' + string + '"';
}
Run Code Online (Sandbox Code Playgroud)
这将生成一个有效的ASCII-only,javascript引用的输入字符串
例如quote("Doppelgänger!")将是"Doppelg\u00e4nger!"
要恢复编码,您只需评估结果即可
var encoded = quote("Doppelgänger!");
var back = JSON.parse(encoded); // eval(encoded);
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,你不能在不丢弃数据的情况下将UTF-8 text/plain转换为ASCII text/plain.
您可以将UTF-8 text/plain转换为ASCII格式/格式.例如,HTML允许UTF-8中的任何字符使用字符引用表示在ASCII数据文件中.
如果我们继续这个例子,在JavaScript中,charCodeAt可以帮助将字符串转换为使用HTML字符引用的表示形式.
另一种方法是URL,并在JS中作为encodeURIComponent实现.
| 归档时间: |
|
| 查看次数: |
43700 次 |
| 最近记录: |