<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml xml:lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/vnd.wap.wml; charset=utf-8"/>
<meta http-equiv="Cache-Control" content="no-cache"/></head>
<card title="支持中文 ID3 的 Mp3blaster - Gracecode.com">
<p>从 LinuxToy 上面看见关于 <a href="http://linuxtoy.org/archives/mp3blaster.html" title="http://linuxtoy.org/archives/mp3blaster.html">Mp3blaster 的介绍</a>，但是有很多兄弟反应他不支持中文 ID3。由于这个问题我以前也碰到过，而且是已经解决了的，下面说说我的解决的办法。</p>

<p>包路径下有个 src/id3parse.cc 文件，里面有一个函数如下：</p>

<pre>/* tampers with 's' to replace non-printable chars with dots. */
void
convert_to_sane_string(char *s)
{
    unsigned int
        cnt = strlen(s),
        i;

    for (i = 0; i &lt; cnt; i++)
    {
        if (s[i] &lt; (char)32)
            s[i] = '.';
    }
}</pre><p>它的主要问题就是 strlen 不支持多字符集（比如中文），所以都将中文转换成了 '.'（点） 。而本身这个函数就起到一个过滤的功能，所以加上多字符集的判断（Multibyte String）我个人感觉没有必要，就直接注释掉了。</p>

<p>最后发现中文 ID3 就可以正常显示了（手气真的不错）。下面是一个效果图一张：</p>

<p><img src="http://photo14.yupoo.com/20080102/105830_1768415811.jpg" alt="http://photo14.yupoo.com/20080102/105830_1768415811.jpg" title="http://photo14.yupoo.com/20080102/105830_1768415811.jpg" /></p>

<p>最后，提供我修改后的代码<a href="http://www.gracecode.com/upload/2008_01_02/1199244384.tgz" title="http://www.gracecode.com/upload/2008_01_02/1199244384.tgz">打包下载</a>，感谢本部门的唐工同志提供 Linux 环境。</p>


<p>
<a href="http://www.gracecode.com/wap/">Gracecode.com</a> |
<a href="http://www.gracecode.com/wap/d/526 ">Permalink</a>(<a href="http://www.gracecode.com/Archive/Display/526 ">xHTML</a>) |
<a href="http://www.gracecode.com/Trackback/Recieve/526/fsw55g">Trackback</a> |
<a href="http://rss.gracecode.com">Rss</a>
</p>
</card>
</wml>