ISO-8859-1乱码恢复

ISO-8859-1乱码恢复

大家好,又见面了,我是全栈君。

为兼容较旧的jQuery插件,我把jQuery版本号从2.1.x降到了1.8.x,这比加入jquery-migration插件要来得干脆。

我没把这两个版本号的的区别一一记下来,而是直接改个版本号号。降级之后页面没有报错,我也就觉得没问题。直到有一天发现数据库非常多用户生成内容乱码了。

通过一番调试,原因找到了:jQuery ajax使用的http方法,1.9.0之前用选项type指定。而1.9.0及之后用选项method(选项type为method的别名)指定:

//from jquery 1.9.0
jQuery.ajax("/action",{
    method:"POST"
});
//before jquery 1.9.0
jQuery.ajax("/action",{
    type:"POST"
});

当把jQuery版本号从2.1.x降到了1.8.x时,以下的代码就隐藏着一个bug,不报错但非常致命:

jQuery.ajax("/action",{
    method:"POST" //buggy
});

原因是jQuery 1.8.x不认选项method,意味着jQuery终于的决定使用的http方法会是默认的”GET”

当出现乱码时。首先可能会确定服务端的字符解码有没有问题,即使服务端字符解码设置已经稳稳地应用在其它非常多项目中。

bug显露出来了,kill掉即可。但这期间bug造成的数据库不少用户生成数据乱码怎么办。承认技术失误并向用户道歉?

非常久曾经听说有软件能够将乱码恢复成正常文本,这说明恢复还是有希望的。现已知乱码是因未对URI进行解码造成的,因此解码之后应该就能恢复成正常文本。

照着这样的思路我把乱码内容复制出来做了个測试:

decodeURIComponent(escape("一直想买一个,可惜没有米啊•Š"))

居然能够恢复出正常文本!

于是写了个小程序,从数据库查出乱码内容。再将其恢复成正常文本。最后写回数据库。

有时候降级不只改个版本号号那么简单,一些代码得跟着同步调整。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116354.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java安全之log4j反序列化漏洞分析

    Java安全之log4j反序列化漏洞分析0x00前言前段时间在看某个cms代码的时候,发现log4j组件版本存在漏洞,并且开启了端口,但web站点是nginx反向代理的,而在外网并没有开放到该端

    2021年12月12日
  • java中遍历数组的方法_java遍历object数组

    java中遍历数组的方法_java遍历object数组参考labmbda表达式引言记录一下Java遍历数组的几种常见方法下面以遍历整数数组为例Integer[]arr={1,3,4,5,6};//这里不能使用int[],会报错//!!!注意:使用Arrays.asList转换为集合时,不能用其进行修改集合的相关方法(add/remove)List<Integer>list=Arrays.asList(arr);1、利用for遍历//1、利用for遍历System.out.prin

  • sublime text3 激活码(JetBrains全家桶)

    (sublime text3 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • webpack 核心_webpack解决了什么问题

    webpack 核心_webpack解决了什么问题前言本质上,webpack是一个用于现代JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部构建一个依赖图(dependencygraph),此

  • CentOS 7 x8安装记录

    CentOS 7 x8安装记录CentOS7x8安装插入刻录好的U盘(刻录这里我就不说了,有实用的刻录链接可以下方留言给我我补充上)按下拥有弹性的开机按钮,开启你的装机旅程,启动时注意!按F11进入BootMenu一、在BootMenu中选择UEFI:VendorCoProductCode,Partition1如果选择了VendorCoProductCode安装结束后,启动系统后就会下面这副惨样子…

  • 二分查找判定树(二分查找树平均查找长度)

    如果data[0]等于一组数据中最小的,那么就会增加查找的时间复杂度。平衡二叉树(追求极致的平衡),现实需求很难满足,红黑数孕育而生

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号