Mar*_*jas 1 javascript unicode base64
$('form#update').submit(function(){
var _data = $(this).serializeArray();
var param = {};
$.map(_data,function(a,b){
if(a.name=='HotelName'){
param[a.name] = window.btoa(a.value);
}
else{
param[a.name] = a.value;
}
});
console.log(param);
$.post('api.coupon_edit_post.php',param,function(r){
coupons();
reloadMarkers();
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
window.btoa会导致此错误吗?
我正在使用window.btoa所以我可以传递大部分字符.
编辑:我尝试了MDN解决方案,但它无法正常工作.我使用的是谷歌浏览器版本24.0.1312.57米
错误来自于window.btoa.
您应修改 MDN解决方案并在转换前省略解码步骤,如下所示:
function utf8_to_b64( str ) {
return window.btoa(encodeURIComponent( str ));
}
function b64_to_utf8( str ) {
return decodeURIComponent(window.atob( str ));
}
Run Code Online (Sandbox Code Playgroud)
这将从编码的字符串创建b64字符串,而不是再次解码(这将再次创建符号,btoa无法处理).现在这个工作:
utf8_to_b64('? à la mode');
b64_to_utf8("JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl");
Run Code Online (Sandbox Code Playgroud)
当然由于编码,这显着延长了b64字符串.
您现在可以修改您的示例:
param[a.name] = utf8_to_b64(a.value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6823 次 |
| 最近记录: |