彻底解决erlang edoc中文乱码问题

今天经过两天得奋战 终于彻底解决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"].

 

你可能感兴趣的:(html,xml,erlang,css,XHTML)