<?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>zend framework归档 - 布鲁文的蓝色奇想</title>
	<atom:link href="https://www.mrven.com/node/tag/zend-framework/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrven.com/node/tag/zend-framework</link>
	<description>A MRVEN SITE</description>
	<lastBuildDate>Tue, 03 Feb 2009 07:47:41 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>
	<item>
		<title>解决Zend_Filter_Input中文乱码问题</title>
		<link>https://www.mrven.com/node/362</link>
					<comments>https://www.mrven.com/node/362#respond</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Tue, 03 Feb 2009 07:47:41 +0000</pubDate>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>
		<guid isPermaLink="false">http://www.naks.cn/blueven/?p=362</guid>

					<description><![CDATA[<p>Zend_Filter_Input默认会给所有通过的数据添加一个HtmlEntities的过滤器。不幸的是，这 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/362">解决Zend_Filter_Input中文乱码问题</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>Zend_Filter_Input默认会给所有通过的数据添加一个HtmlEntities的过滤器。不幸的是，这个HtmlEntities使用的是ISO-8859-1编码，如果你使用的是GB2312或者UTF-8一类的编码，那中文字符就惨了，乱码无疑。</p>
<p>想要避开这个问题，就不能再用$input-&gt;field的方式访问数据了，要用$input-&gt;getUnescaped(&#8216;field&#8217;)的方式，这样会忽略掉默认的HtmlEntities过滤器。如果你仍然喜欢用$input-&gt;field的方式，往下看：</p>
<p>一个简单的解决方法是直接去改Zend/Filter/HtmlEntities.php文件，把构造函数（public function __construct($quoteStyle = ENT_COMPAT, $charSet = &#8216;ISO-8859-1&#8217;)）里第二个参数的默认值改成你的网站使用的编码。</p>
<p>这个方法还有一个额外的好处，以后当你使用HtmlEntities时也无需再指定编码了。虽然通常不鼓励直接修改Zend Framework的源文件，但是这一点小小的改动不会有什么英系那个。唯一的弊端就是每次升级Zend Framework时必须再改一次。</p>
<p>另一个方法是用别的过滤器替换掉默认的HtmlEntities过滤器。你可以使用其他的标准过滤器，比如StringTrim；也可以模仿HtmlEntities写个你自己的html转移过滤器，用上你自己的网站编码；还可以创建一个空过滤器，不进行任何过滤。然后在实例化Zend_Filter_Input时这样写：</p>
<pre lang="php"><?php
$options = array('escapeFilter' => $myFilter);
$input = new Zend_Filter_Input($filters, $validators, $data, $options);
?></pre>
<p>或者：</p>
<pre lang="php">
<?php
$input = new Zend_Filter_Input($filters, $validators, $data);
$input->setDefaultEscapeFilter($myFilter);
?>
</pre>
<p>大功告成！</p>
<p><a href="https://www.mrven.com/node/362">解决Zend_Filter_Input中文乱码问题</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/362/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
