关于使用Markdown解析器Parsedown应该注意的编码问题

使用 Parsedown 来解析Markdown文本的时候,出现了一个很奇怪的问题:

添加代码块的时候不允许添加 ··· ,在xml文件里不能添加注释 ,否则此段代码块中的内容会被吃掉

下面是一个问题文本的例子

总结一下以前自定义字体的方法
1 .**通过findViewById找到view,然后一个个的去设置字体**
\`\`\`java
Typeface customFont = Typeface.createFromAsset(this.getAssets(), "fonts/customFont.ttf");
TextView view = (TextView) findViewById(R.id.text);
view.setTypeface(customFont);
···
\`\`\`

于是我把出现问题的markdown文本放在了Parsedown 的在线测试中去测试,发现解析完全正常。

wtf,这可如何是好!!

只能在Parsedown项目的issue中一条条的翻,翻到了一条疑似靠谱的:https://github.com/erusev/parsedown/issues/389 ,回复中有人提到了编码问题,大致是说这样做就可以了

echo $url = iconv("UTF-8","ISO-8859-1//TRANSLIT//IGNORE",$texto->text($url));

恩,照着做,结果出现了乱码。。。。

其实直觉告诉我肯定会出错的。

但是我基本锁定了就是编码问题。

于是看Parsedown的源码,发现所有的htmlspecialchars函数都是用的utf-8编码,而服务器全是GBK的编码,于是,我把所有utf-8都替换成了GB2312,注意必须是GB2312,而不是GBK。

改完之后赶紧测试,发现上面的问题不再出现了。

大功告成!!