<?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>Python | ウダ2Blog</title>
	<atom:link href="https://uda2.com/blog/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>https://uda2.com/blog</link>
	<description>大阪でフリーランスとしてWEB制作している管理人が気になった技術をメモったり、作ったツールの紹介などを綴っているブログです。</description>
	<lastBuildDate>Mon, 15 Apr 2024 04:54:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>URLエンコーディングの違い</title>
		<link>https://uda2.com/blog/urlencodevariation/</link>
					<comments>https://uda2.com/blog/urlencodevariation/#respond</comments>
		
		<dc:creator><![CDATA[uda2]]></dc:creator>
		<pubDate>Mon, 15 Apr 2024 04:54:39 +0000</pubDate>
				<category><![CDATA[制作日記]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://uda2.com/blog/?p=2768</guid>

					<description><![CDATA[<p>URLエンコードはその名の通りURLに使えない文字をエスケープする記述ですが言語や関数によって若干ぶれがあるのですが実際に比較検証した事がなかったのでやってみました。まずURLはURL Standardに定義されていてP</p>
The post <a href="https://uda2.com/blog/urlencodevariation/">URLエンコーディングの違い</a> first appeared on <a href="https://uda2.com/blog">ウダ2Blog</a>.]]></description>
										<content:encoded><![CDATA[<p>URLエンコードはその名の通りURLに使えない文字をエスケープする記述ですが言語や関数によって若干ぶれがあるのですが実際に比較検証した事がなかったのでやってみました。<br>まずURLは<a href="https://url.spec.whatwg.org/" target="_blank" rel="noreferrer noopener">URL Standard</a>に定義されていて<br>PHPの世界ではurlencode()とrawurlencode()があってurlencode()は半角スペースを「+」に変換したり「~」も変換したりします。<br>Pythonはurllib.parse.quote()とurllib.parse.quote_plus()があってurllib.parse.quote_plus()は半角スペースを「+」に変換したり「/」も変換したりします。<br>JavaScriptはencodeURI()とencodeURIComponent()があってencodeURIComponentはURI予約語「#$&amp;+,/:;=?@」も変換するという違いがあります。</p>



<span id="more-2768"></span>



<p>差異のある文字をピックアップしたアスキー表を作成しました。（<a href="https://uda2.com/testbox/test_urlencode.php" target="_blank" rel="noopener" title="">全文字コードはコチラ</a>）</p>



<figure class="wp-block-table"><table><thead><tr><th>10進数</th><th>16進数</th><th>実体</th><th>PHP1</th><th>PHP2</th><th>PY1</th><th>PY2</th><th>JS1</th><th>JS2</th></tr></thead><tbody><tr><th>32</th><th>U+0020</th><th></th><td>+</td><td>%20</td><td>+</td><td>%20</td><td>%20</td><td>%20</td></tr><tr><th>33</th><th>U+0021</th><th>!</th><td>%21</td><td>%21</td><td>%21</td><td>%21</td><td>!</td><td>!</td></tr><tr><th>35</th><th>U+0023</th><th>#</th><td>%23</td><td>%23</td><td>%23</td><td>%23</td><td>#</td><td>%23</td></tr><tr><th>36</th><th>U+0024</th><th>$</th><td>%24</td><td>%24</td><td>%24</td><td>%24</td><td>$</td><td>%24</td></tr><tr><th>38</th><th>U+0026</th><th>&amp;</th><td>%26</td><td>%26</td><td>%26</td><td>%26</td><td>&amp;</td><td>%26</td></tr><tr><th>39</th><th>U+0027</th><th>&#8216;</th><td>%27</td><td>%27</td><td>%27</td><td>%27</td><td>&#8216;</td><td>&#8216;</td></tr><tr><th>40</th><th>U+0028</th><th>(</th><td>%28</td><td>%28</td><td>%28</td><td>%28</td><td>(</td><td>(</td></tr><tr><th>41</th><th>U+0029</th><th>)</th><td>%29</td><td>%29</td><td>%29</td><td>%29</td><td>)</td><td>)</td></tr><tr><th>42</th><th>U+002a</th><th>*</th><td>%2A</td><td>%2A</td><td>%2A</td><td>%2A</td><td>*</td><td>*</td></tr><tr><th>43</th><th>U+002b</th><th>+</th><td>%2B</td><td>%2B</td><td>%2B</td><td>%2B</td><td>+</td><td>%2B</td></tr><tr><th>44</th><th>U+002c</th><th>,</th><td>%2C</td><td>%2C</td><td>%2C</td><td>%2C</td><td>,</td><td>%2C</td></tr><tr><th>47</th><th>U+002f</th><th>/</th><td>%2F</td><td>%2F</td><td>%2F</td><td>/</td><td>/</td><td>%2F</td></tr><tr><th>58</th><th>U+003a</th><th>:</th><td>%3A</td><td>%3A</td><td>%3A</td><td>%3A</td><td>:</td><td>%3A</td></tr><tr><th>59</th><th>U+003b</th><th>;</th><td>%3B</td><td>%3B</td><td>%3B</td><td>%3B</td><td>;</td><td>%3B</td></tr><tr><th>61</th><th>U+003d</th><th>=</th><td>%3D</td><td>%3D</td><td>%3D</td><td>%3D</td><td>=</td><td>%3D</td></tr><tr><th>63</th><th>U+003f</th><th>?</th><td>%3F</td><td>%3F</td><td>%3F</td><td>%3F</td><td>?</td><td>%3F</td></tr><tr><th>64</th><th>U+0040</th><th>@</th><td>%40</td><td>%40</td><td>%40</td><td>%40</td><td>@</td><td>%40</td></tr><tr><th>126</th><th>U+007e</th><th>~</th><td>%7E</td><td>~</td><td>~</td><td>~</td><td>~</td><td>~</td></tr></tbody></table><figcaption class="wp-element-caption">PHP1：PHPの関数「urlencode()」<br>PHP2：PHPの関数「rawurlencode()」<br>PY1：Pythonの関数「urllib.parse.quote_plus()」<br>PY2：Pythonの関数「urllib.parse.quote()」<br>JS1：Pythonの関数「encodeURI()」<br>JS2：Pythonの関数「encodeURIComponent()」</figcaption></figure>



<p>デコードは概ね問題無いが「+」を絡めると誤変換が起こる。<br>例えばサーバー側でrawurlencode()やurllib.parse.quote_plus()を使ってエンコードした文字列をブラウザのrawurlencodeでデコードすると誤変換が起こる。<br>なのでサーバーでもクライアントでも使うなら「+」を使わないdecodeURIComponent()・urllib.parse.quote()・rawurldecode()がオススメです。</p>



<p>なお変換するなら<a href="https://tools.uda2.com/urlencode.html" target="_blank" rel="noreferrer noopener">URLエンコードとデコード -UDA TOOL-</a>を用意しております。</p>The post <a href="https://uda2.com/blog/urlencodevariation/">URLエンコーディングの違い</a> first appeared on <a href="https://uda2.com/blog">ウダ2Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://uda2.com/blog/urlencodevariation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
