edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器

1、质量管理系统有这么个需求,要在通知内容栏中显示服务器down下来的带html格式的内容,并能够修改,修改后要获取到带html的内容,上传回服务器:

edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器_第1张图片

2、获取到edittext带html内容用这个:

neirongStr = Html.toHtml(neirongET.getText()).replace(" dir=\"ltr\"", "").replace("\n", "
");
3、需要替换掉edittext自己生成dir属性,服务端spring框架不能识别。

4、还需要将\n替换成
,服务器在存储时会直接将\n转码,不能识别。

5、转成json后传给服务器的代码是这样婶儿的:

edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器_第2张图片

6、服务器返回的json是这样婶儿的:

edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器_第3张图片

7、一脸懵逼,这个世界是怎么了,咋所有都是ASCII码,html标签也都被转了,而且连ASCII码的&字符都被转成了Unicode编码,晕

8、在确定不是HttpClient传输转码的问题后,挨个排查问题

9、查了查是Gson在转json的时候,就把所有html标签给转了,败类,改一下:

Gson mgson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();				
10、好了那么一nainai(闫鹤翔在偷笑~)

11、转成json后传给服务器的代码是这样婶儿的:

edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器_第4张图片

12、服务器返回的json是这样婶儿的:

edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器_第5张图片
13、现在只有中文是ASCII码的,咋回事的㖏,打印一下edittext获取到带html格式的代码是这样婶儿的:


14、看来是Html.toHtml(getText())的时候将中文都转成了ASCII码

15、知道问题就好办了,Stack Overflow一下,答案在此:

neirongStr = Html.toHtml(neirongET.getText()).replace(" dir=\"ltr\"", "").replace("\n", "
"); neirongStr = StringEscapeUtils.unescapeHtml4(neirongStr);

16、将转过的码再给转回来,StringEscapeUtils是apache下common-lang.jar里的包

17、现在转成json后传给服务器的代码是这样婶儿的:

edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器_第6张图片

18、服务器返回的json是这样婶儿的:

edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器_第7张图片

666、我只想说:完!美!


你可能感兴趣的:(android)