<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>花儿开了 &#187; encode</title>
	<atom:link href="http://blog.istef.info/tag/encode/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.istef.info</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 06 Jun 2010 05:52:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<atom:link rel='hub' href='http://blog.istef.info/?pushpress=hub'/>
		<item>
		<title>WordPress 2.0.2 上传图片标题乱码解决</title>
		<link>http://blog.istef.info/2006/04/26/wordpress-202-title-encoding-error-of-inline-upload-bug-and-solution/</link>
		<comments>http://blog.istef.info/2006/04/26/wordpress-202-title-encoding-error-of-inline-upload-bug-and-solution/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 15:31:02 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[encode]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2006/04/26/wordpress-202-title-encoding-error-of-inline-upload-bug-and-solution/</guid>
		<description><![CDATA[上传文件描述乱码是 WordPress 的一个“固有”的 Bug 了。自从 1.5 版就有，当时我还专门写文章说明了解决办法。WordPress 升级到了 2.0.2，这个 Bug 却依然存在，虽然修改方式略有变化，但原理都是相同的，就是没有正确处理 PHP 函数 htmlentities() 的编码问题。 问题现象：撰写文章时，用书写界面下方的上传文件对话框可以上传附件。当在标题处键入非拉丁字符（多字节字符）时，上传成功后附件的描述为乱码。 解决方案：1. 打开 /wp-includes/functions.php，找到函数 function htmlentities2($myHTML)，将此函数按如下替换： &#60;?php function&#160;htmlentities2($myHTML) { &#160; &#160; return&#160;preg_replace(&#34;/&#38;amp;([A-Za-z]{0,4}\w{2,3};&#124;#[0-9]{2,3};)/&#34;,&#34;&#38;$1&#34;,htmlentities($myHTML,ENT_QUOTES,get_settings('blog_charset'))); } ?&#62; 2. 打开 /wp-admin/inline-uploading.php，搜索 htmlentities(，应该有两处，分别位于 237 行和 257 行，按如下更改： &#60;?php // 237 行，原始代码为： $title = htmlentities($image['post_title'], ENT_QUOTES); // 修改为 $title = htmlentities($image['post_title'], ENT_QUOTES,get_settings('blog_charset')); &#160; // 257 行，原始代码为： [...]]]></description>
			<content:encoded><![CDATA[<p>上传文件描述乱码是 WordPress 的一个“固有”的 Bug 了。自从 1.5 版就有，当时我还专门<a href="http://blog.istef.info/2005/07/27/2-wordpress-hacks/">写文章</a>说明了解决办法。WordPress 升级到了 2.0.2，这个 Bug 却依然存在，虽然修改方式略有变化，但原理都是相同的，就是没有正确处理 PHP 函数 htmlentities() 的编码问题。</p>
<p>问题现象：撰写文章时，用书写界面下方的上传文件对话框可以上传附件。当在<strong>标题</strong>处键入<strong>非拉丁字符（多字节字符）</strong>时，上传成功后附件的描述为乱码。</p>
<p>解决方案：1. 打开 <wp-dir>/wp-includes/functions.php，找到函数 function htmlentities2($myHTML)，将此函数按如下替换：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">htmlentities2</span><span style="color: Olive;">(</span><span style="color: #00008b;">$myHTML</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">preg_replace</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/&amp;amp;([A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&amp;$1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">htmlentities</span><span style="color: Olive;">(</span><span style="color: #00008b;">$myHTML</span><span style="color: Gray;">,</span><span style="color: Blue;">ENT_QUOTES</span><span style="color: Gray;">,</span><span style="color: Blue;">get_settings</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">blog_charset</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">?&gt;</span></li></ol></div>
<p>2. 打开 <wp-dir>/wp-admin/inline-uploading.php，搜索 <strong>htmlentities(</strong>，应该有两处，分别位于 237 行和 257 行，按如下更改：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: #ffa500;">// 237 行，原始代码为：</span></li>
<li><span style="color: #00008b;">$title</span><span style="color: Gray;"> = </span><span style="color: Blue;">htmlentities</span><span style="color: Olive;">(</span><span style="color: #00008b;">$image</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">post_title</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">ENT_QUOTES</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">// 修改为</span></li>
<li><span style="color: #00008b;">$title</span><span style="color: Gray;"> = </span><span style="color: Blue;">htmlentities</span><span style="color: Olive;">(</span><span style="color: #00008b;">$image</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">post_title</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">ENT_QUOTES</span><span style="color: Gray;">,</span><span style="color: Blue;">get_settings</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">blog_charset</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// 257 行，原始代码为：</span></li>
<li><span style="color: #00008b;">$title</span><span style="color: Gray;"> = </span><span style="color: Blue;">htmlentities</span><span style="color: Olive;">(</span><span style="color: #00008b;">$attachment</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">post_title</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">ENT_QUOTES</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">// 修改为</span></li>
<li><span style="color: #00008b;">$title</span><span style="color: Gray;"> = </span><span style="color: Blue;">htmlentities</span><span style="color: Olive;">(</span><span style="color: #00008b;">$attachment</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">post_title</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">ENT_QUOTES</span><span style="color: Gray;">,</span><span style="color: Blue;">get_settings</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">blog_charset</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">?&gt;</span></li></ol></div>
<p>以上代码测试通过 (WordPress 2.0.2) ，并已经应用于本站。
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2006%2F04%2F26%2Fwordpress-202-title-encoding-error-of-inline-upload-bug-and-solution%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2006%2F04%2F26%2Fwordpress-202-title-encoding-error-of-inline-upload-bug-and-solution%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2006/04/26/wordpress-202-title-encoding-error-of-inline-upload-bug-and-solution/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached
Database Caching 1/9 queries in 0.006 seconds using memcached
Object Caching 317/331 objects using memcached

Served from: blog.istef.info @ 2012-02-13 13:36:40 -->
