最近在开发的时候,我想要将前台html标签中的一些内容直接传入后台,存入数据库,便于后期数据回显时样式完整,但是在html标签等数据直接通过ajax传给后台的时候,会出现部分样式丢失、参数包含特殊字符可能会造成间断等等一系列问题。最后问题解决了,步骤记录下:
- 通过js获取要传入后台的html内容字符串,
- 将字符串通过encodeURIComponent
()
把URI字符串采用URF-8编码格式转化成escape格式的字符串。 - 将编码后的数据传入后台
经过上述3步,传入后台的数据已经是正确的数据了。
如果无需在java里对传入的字符串操作,直接存入数据库,则不需要做任何处理,直接存储。
如果需要在java里对传入的字符串进行操作,可以通过下面的方式进行解码。
java.net.URLDecoder.decode(works, "UTF-8");
在数据回显的时候在js里通过decodeURIComponent()来解码,进行正确的数据展示。
备忘:
encodeURI(): 把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $ & ( ) = : / ; ? + ',反向编码函数:decodeURI()。
与encodeURI()相比,这个encodeURIComponent()函数会将更多的字符进行编码,比如"/"等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个来进行编码。否则“/”字符被编码后将URL显示错误。不会被此方法编码的字符:! * ( )
场景:encodeURI()用于整个url跳转、 encodeURIComponent()用于参数的传递,参数包含特殊字符可能会造成间断