1、质量管理系统有这么个需求,要在通知内容栏中显示服务器down下来的带html格式的内容,并能够修改,修改后要获取到带html的内容,上传回服务器:
2、获取到edittext带html内容用这个:
neirongStr = Html.toHtml(neirongET.getText()).replace(" dir=\"ltr\"", "").replace("\n", "<br>");3、需要替换掉edittext自己生成dir属性,服务端spring框架不能识别。
4、还需要将\n替换成<br>,服务器在存储时会直接将\n转码,不能识别。
5、转成json后传给服务器的代码是这样婶儿的:
6、服务器返回的json是这样婶儿的:
8、在确定不是HttpClient传输转码的问题后,挨个排查问题
9、查了查是Gson在转json的时候,就把所有html标签给转了,败类,改一下:
Gson mgson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();10、好了那么一nainai(闫鹤翔在偷笑~)
11、转成json后传给服务器的代码是这样婶儿的:
12、服务器返回的json是这样婶儿的:
13、现在只有中文是ASCII码的,咋回事的㖏,打印一下edittext获取到带html格式的代码是这样婶儿的:
14、看来是Html.toHtml(getText())的时候将中文都转成了ASCII码
15、知道问题就好办了,Stack Overflow一下,答案在此:
neirongStr = Html.toHtml(neirongET.getText()).replace(" dir=\"ltr\"", "").replace("\n", "<br>"); neirongStr = StringEscapeUtils.unescapeHtml4(neirongStr);
16、将转过的码再给转回来,StringEscapeUtils是apache下common-lang.jar里的包
17、现在转成json后传给服务器的代码是这样婶儿的:
18、服务器返回的json是这样婶儿的:
666、我只想说:完!美!