从这周开始,慢慢的要加入每周总结才行。在不写点博客,不单是长草的原因,更多是个人积累没能沉积下来。

这周开发过程中,遇到两个问题,一个比较基础,是由于没有做过整体应用设计的结果,另外一个是底层编码处理的结果。

1、展示规范

由于项目需要进行内容展示录入,原功能是在web端进行录入,php在文章编辑是,存入数据库中以 html 格式保存。

在android开发过程中,使用 Html.fromHtml.toString() 进行解析,转换成textview支持的方式展示,该方法,将去掉 html 的多种效果。(记得有中方法使textview支持html的文字颜色效果的设置)

在项目过程中,需要对后台进行移动化改造,就是添加一个移动端的后台管理功能。其中包含了添加文章功能。

问题发生在,EditText保存的换行符为 “\n”,而对应的 Html 换行为 “
”,保存在数据库之后,当移动端获取展示时,Html.fromHtml 方法将 “\n” 替换成了 “ ”,也就是空格,这时候在移动端的效果就无法看了。也许有些人的处理方法可能会和我一样,在进行 Html.fromHtml 解析之前,进行 .replace(“\n”,”
”) 操作,用于替换换行。没错,我也这么做了,提交测试之后,才发现,这样没法兼容以前的版本,因为以前的版本解析代码是没有 replace 操作的。也就造成旧版本无法解析新移动后台生成的文章内容。

为了解决这个问题,最终修改是在移动管理后台提交到数据库的时候使用 .replace(“\n”,”
”) 进行换行格式化。这样保存在数据库中的内容依旧使用 html 格式保存相应的换行展示。(如果你还需要粗体什么的支持,也应该在录入源头去进行控制),这样才能很好的兼容以前的版本。

在这里,暴露出来的问题是,定义了需求,但没做系统设计,没有规范字段保存内容的格式造成的问题。我司现在目前感觉在需求转设计环节基本没有,很多功能上得太急的时候,就会造成这样或那样的问题,这就算一个典型问题了。

2、base64在php解析的问题

公司移动端与后台交互信息是需要通过http协议与后台php服务器进行交互的,在加密过程中是有base64编解码的。

ios在测试时,出现了一时提交成功,一时提交失败的情况。在架构师进行底层抓包之后,发现,ios上传到服务端的编码内容与移动端日志的编码内容一致,但在php接受到的内容中,却不一致。出现的问题在于所有的+号变成了空格。

最终原因,是因为通过http协议传输过程中,这个符号 “+”,在php http解析时识别为了空格,按照正常传输需要序列号为 “%2B” 传输才能正确。恩,临时决定这么做之后,ios成功上传所以内容。

可是现在反过来一想,如果这么修改的话,必要要对ios的所有请求接口进行这么操作,并且,这个是属于治标不治本的方法。

最终在 这里 找到了问题所在:

最终的处理结果可以通过UTF-8和UTF-16最转换进行,这个问题,后面将反馈给工程师定夺最终怎么修改,而不是通过简单的将base64 的 “+”,替换为 “%2B”。

恩,从这周开始,要坚持每周进行编码工作总结,慢慢积累自己的内容。忽然发现,未知的笔记积累也不是很好用,记录下来之后,没有原文的链接,还要去网上搜才找到了第二点的原来看的原文。看来还要是衡量一下还是准备更换会evernote才行。