今天经过两天得奋战 终于彻底解决edoc中文乱码问题。
前段时间学习edoc发现中文乱码问题,当时只是用了临时得解法方法。(Write前截取list插入数据)
详见http://langzhe.iteye.com/blog/663947
看了以下edoc API,也没有发现设置meta标签函数。看原码得时候发现,xmerl中有meta。其实在原码里面最终调用xmerl得方法。本次得实现方法实在拼xml之前插入meta,这样就不用截取list(浪费资源)。
以下是具体方法:
主要修改edoc_doclet.erl和edoc_layout.erl
edoc_doclet.erl 添加 get_meta()方法 ,
{head, [?NL, {title, [Title]}, ?NL] ++ CSS}, 改为 {head, [?NL, {title, [Title]}, ?NL] ++get_meta()++ CSS},
xhtml_1(Title, CSS, Body) -> {html, [?NL, {head, [?NL, {title, [Title]}, ?NL] ++get_meta()++ CSS}, ?NL, Body, ?NL] }. get_meta()-> [{meta,[{'http-equiv',"Content-Type"}, {content,"text/html; charset=utf-8"}], []}, "\n"].
edoc_layout.erl 添加 get_meta()方法 ,
{head, [?NL, {title, [Title]}, ?NL] ++ CSS}, 改为 {head, [?NL, {title, [Title]}, ?NL] ++get_meta()++ CSS},
xhtml(Title, CSS, Body) -> [{html, [?NL, {head, [?NL, {title, Title}, ?NL] ++ get_meta() ++ CSS}, ?NL, {body, [{bgcolor, "white"}], Body}, ?NL] }, ?NL]. get_meta()-> [{meta,[{'http-equiv',"Content-Type"}, {content,"text/html; charset=utf-8"}], []}, "\n"].