<?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.wabow.com/archives/tag/encode/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.wabow.com</link>
	<description>Wabow Information Inc. Blog</description>
	<lastBuildDate>Fri, 21 May 2010 15:11:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>全型轉半型</title>
		<link>http://blog.wabow.com/archives/1874</link>
		<comments>http://blog.wabow.com/archives/1874#comments</comments>
		<pubDate>Thu, 13 Aug 2009 04:08:11 +0000</pubDate>
		<dc:creator>suzy</dc:creator>
				<category><![CDATA[技術分享]]></category>
		<category><![CDATA[big5]]></category>
		<category><![CDATA[encode]]></category>

		<guid isPermaLink="false">http://blog.wabow.com/?p=1874</guid>
		<description><![CDATA[今天想要分享的是 中文字 全型轉半型的 function! 之前的做法很土法鍊鋼, 就是笨笨地用取代(str_replace)的方式把所有全型字一一換成半型字, 但是客戶經常回報, 某些特定字會造成亂碼, 像是 '中央北路' and '郭郭' 等.... 造成了許多困擾. 因此上網搜尋了一下, 且找到了一個真正的解決方法....... 出處: [原创]PHP全角转半角算法和函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 function fullToHalf&#40;$str, $encode='Big5'&#41; &#123; if [...]]]></description>
			<content:encoded><![CDATA[<p>今天想要分享的是 中文字 全型轉半型的 function!</p>
<p>之前的做法很土法鍊鋼, 就是笨笨地用取代(str_replace)的方式把所有全型字一一換成半型字, 但是客戶經常回報, 某些特定字會造成亂碼, 像是 '中央北路' and '郭郭' 等.... 造成了許多困擾.</p>
<p>因此上網搜尋了一下, 且找到了一個真正的解決方法.......</p>
<p><span id="more-1874"></span></p>
<p>出處:  <a href="http://p.dvbbs.net/rwb7p1i40004.shtml">[原创]PHP全角转半角算法和函数</a></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> fullToHalf<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #339933;">,</span> <span style="color: #000088;">$encode</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'Big5'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$encode</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'UTF8'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_convert_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'UTF-8'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$encode</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$ret</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000088;">$s1</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// 判斷 $c 第八位是否為 1 (漢字）</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">=</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0x80</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
			<span style="color: #000088;">$s2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">++</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$s3</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">++</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$c</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span> <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0xF</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0x3F</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s3</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0x3F</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">12288</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$ret</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' '</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">65280</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$c</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">65375</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$c</span> <span style="color: #339933;">-=</span> <span style="color: #cc66cc;">65248</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$ret</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$ret</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$s1</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$s2</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$s3</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$ret</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$encode</span><span style="color: #339933;">==</span> <span style="color: #0000ff;">'UTF-8'</span> ? <span style="color: #000088;">$ret</span> <span style="color: #339933;">:</span> <span style="color: #990000;">mb_convert_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ret</span><span style="color: #339933;">,</span> <span style="color: #000088;">$encode</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'UTF-8'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>研究了一下寫法, 複習了一下 <a href="http://us3.php.net/manual/en/language.operators.bitwise.php">Bitwise Operators (位元運算)</a></p>
<ul>
<li> &lt;&lt; - Shift left (means "multiply by two")</li>
<li> &amp;  - And </li>
<li> | - Or (inclusive or) </li>
</ul>
<h2>程式裡有0x的為16進位數:</h2>
<ul>
<li>0x80 = 16 * 8 = 128 = 10000000</li>
<li>0xF = 15 = 1111</li>
<li>0x3F = 3 * 16 + 15 = 48 + 15 = 63 (也可以從 ASCII table 找）</li>
</ul>
<h2>全型與半型:</h2>
<ul>
<li>半型字符範圍：33-126</li>
<li>全型字符範圍：65281-65374</li>
<li>對應關係是相差：65248</li>
<li>全型空格：12288</li>
<li>半型空格：32</li>
</ul>
<h2>心得</h2>
<p>這個function還真好用阿 XD, 又可順便複習一下 Bitwise, 雖然我們很少用到, 但它其實還有很多活用空間唷.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wabow.com/archives/1874/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
