このファイルはShift_JISで作成されている。UTF-8/PHPの場合

GET方式のPHPとログの文字コード

これは*.phpによるものである。CGIではない。
PHPでの検索ツールでは、呼び出し元ファイルがSJISでもUTF-8でも、対象ファイルがSJISでもUTF-8でも、どの場合も正常に検索できる。
この点では、eseek_1-4.cgiに修正する前のeseek.cgiで検索の不都合が出る場合とは違いがある。


Shift_JISのコンテンツ内から送出されるデータはShift_JISである。
UTF-8のコンテンツ内から送出されるデータはUTF-8である。
EUC_JPのコンテンツ内から送出されるデータはEUC_JPである。

ローカルでShift_JISのファイルからGET方式で*.phpを呼び出したときのパラメーターの文字コードの状態である。

検索語は「風馬牛」である。
  1. mscr.jsが使える場合はeskn関数を使う。
    風馬牛

  2. mscr.jsが使えない場合は手動で使う。
    風馬牛
以下はIE, Edge, Chromeのログの比較である。ブラウザによって差がある。


IE Ver.11

呼び出し時のパラメーターは初めはShift_JISの「\**」形式だが、その後はUTF-8の「%**」形式である。

123.456.78.90 - - [03/Feb/2020:07:43:16 +0900] "GET /res/eseek_n.php?fd=wrd&wd=\x95\x97\x94n\x8b\x8d HTTP/1.1" 200 932 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
「\**」形式のShift_JISである。これは普通である。
123.456.78.90 - - [03/Feb/2020:07:43:16 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%E9%A2%A8%E9%A6%AC%E7%89%9B" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
EUC-JPではなく、UTF-8である。
123.456.78.90 - - [03/Feb/2020:07:43:16 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%E9%A2%A8%E9%A6%AC%E7%89%9B" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
EUC-JPではなく、UTF-8である。
eseek_n.phpでは、呼び出し元から外部パラメーターとして渡されたUTF_8またはShift_JISの文字列(検索キーワード)をPHP内部ではそれらをEUC-JPに変換して検索している。
もちろん、検索対象のファイルについても、UTF_8またはShift_JISの文字列をPHP内部ではそれらをEUC-JPに変換している。

しかし、これがサーバーで実行されると、ログファイルから見るかぎりでは検索キーワードはUTF-8として扱われているようである。


Edge Ver.18

呼び出し時のパラメーターは初めから最後までUTF-8の「%**」形式である。

123.456.78.90 - - [03/Feb/2020:07:44:09 +0900] "GET /res/eseek_n.php?fd=wrd&wd=%E9%A2%A8%E9%A6%AC%E7%89%9B HTTP/1.1" 200 932 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
「%**」形式のUTF-8である。これは異常な仕様である。
123.456.78.90 - - [03/Feb/2020:07:44:09 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%E9%A2%A8%E9%A6%AC%E7%89%9B" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
123.456.78.90 - - [03/Feb/2020:07:44:09 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%E9%A2%A8%E9%A6%AC%E7%89%9B" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
この点は、SJISのコンテンツから送出されるデータはSJISであるという原則からみると、Edge Ver.18は異常な仕様である。


Chrome Ver.79

呼び出し時のパラメーターは初めから最後までShift_JISの「%**」形式である。

123.456.78.90 - - [03/Feb/2020:07:44:49 +0900] "GET /res/eseek_n.php?fd=wrd&wd=%95%97%94n%8B%8D HTTP/1.1" 200 932 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
「%**」形式のShift_JISである。これは普通である。
123.456.78.90 - - [03/Feb/2020:07:44:49 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%95%97%94n%8B%8D" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
123.456.78.90 - - [03/Feb/2020:07:44:49 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%95%97%94n%8B%8D" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
123.456.78.90 - - [03/Feb/2020:07:44:49 +0900] "GET /favicon.ico HTTP/1.1" 200 1078 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%95%97%94n%8B%8D" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
- 2020/02/03 -


EdgeはWEBとLocalでは動作が異なる

両方とも呼び出し時のパラメーターはSJISのURL Encodeだが、Edgeの場合は「%」、IEの場合は「\x」が使われている点が異なる。

【Edge / WEB】
114.134.113.103 - - [10/Mar/2020:19:14:22 +0900] "GET /res/eseek_n.php?fd=ccp&wd=%83N%83C%83b%83N%83\\%81[%83g HTTP/1.1" 200 1536 "http://www.mermaid-tavern.com/taro/ipc/ip3/ipc_0143.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
SJISである。「18.18362」はEdgeのバージョン。「クイックソ\ート」
114.134.113.103 - - [10/Mar/2020:19:14:25 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=ccp&wd=%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
UTF8である。
114.134.113.103 - - [10/Mar/2020:19:14:25 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=ccp&wd=%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"

【IE / Local】
123.456.78.90 - - [10/Mar/2020:19:17:00 +0900] "GET /res/eseek_n.php?fd=ccp&wd=\x83N\x83C\x83b\x83N\x83\\\x81[\x83g HTTP/1.1" 200 1536 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
SJISである。
123.456.78.90 - - [10/Mar/2020:19:17:00 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=ccp&wd=%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
UTF8である。
123.456.78.90 - - [10/Mar/2020:19:17:00 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=ccp&wd=%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
呼び出し元ファイルのipc_0143はSJISのファイルである。


問題はEdgeの場合である。
u8_0014_sjisでの実験結果とは異なっている。どうもMicrosoftのものは動作や仕様がコロコロと勝手に変わるようである。
u8_0014_sjisでの仕様が異常で、上の場合が普通である。その意味では正常に戻ったともいえる。

それで再度確認(Localから)してみると、やはりu8_0014_sjisと同じだった。

【Edge / Local】
123.456.78.90 - - [13/Mar/2020:07:38:07 +0900] "GET /res/eseek_n.php?fd=wrd&wd=%E9%A2%A8%E9%A6%AC%E7%89%9B HTTP/1.1" 200 932 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
UTF8である。これは異常である。
123.456.78.90 - - [13/Mar/2020:07:38:07 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%E9%A2%A8%E9%A6%AC%E7%89%9B" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
123.456.78.90 - - [13/Mar/2020:07:38:07 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek_n.php?fd=wrd&wd=%E9%A2%A8%E9%A6%AC%E7%89%9B" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
こうなると、原因はローカルで実行するかWEBで実行するかの違いしかないことになる(未確認)。
u8_0014_sjisをWEB上から呼び出して確認すると、次のようになっていた。

【Edge / WEB】
123.456.78.90 - - [13/Mar/2020:07:51:53 +0900] "GET /res/eseek_n.php?fd=wrd&wd=%95%97%94n%8B%8D HTTP/1.1" 200 932 "http://www.mermaid-tavern.com/pluto/utf8/u1/u8_0014_sjis.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
SJISである。これは正常である。
やはり原因はここにあったということである。
WEBでは、SJISのコンテンツから送出されるデータはSJISであるという原則にのっとったものになっている


Edgeは、Localでは異常、WEBでは正常ということになる。
今までの動作確認はほとんどがローカルでのものだった。わざわざWEBでするのは面倒だったので敬遠していた。ここが盲点(落とし穴)になっていたようである。

- 2020/03/13 -


GET方式のPHPの日本語引数の例

  1. IEの場合
    起動時の引数データはSJISで「\」で始まっている。
    その後はそのデータはUTF-8で「%」で始まっている。いわゆるUTF-8 URL Encodeになっている。
  2. スマホの場合
    起動時の引数データはSJISで「%」で始まっている。
    その後も同じである。

【たぶんIE】
126.112.246.62 - - [19/Mar/2020:14:20:16 +0900] "GET /res/eseek.php?fd=tpc&wd=\x83G\x83N\x83Z\x83\x8b\x83o\x83J HTTP/1.1" 200 36623 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
SJISである。「エクセルバカ」
126.112.246.62 - - [19/Mar/2020:14:20:17 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek.php?fd=tpc&wd=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%90%E3%82%AB" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
UTF-8である。
126.112.246.62 - - [19/Mar/2020:14:20:17 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek.php?fd=tpc&wd=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%90%E3%82%AB" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
UTF-8である。

【たぶんスマホ】
118.238.236.68 [19/Feb/2020:14:52:53 +0900] "GET /res/eseek.php?fd=ipc&wd=%83G%83N%83Z%83%8B%83o%83J HTTP/1.1" 200 92477 "http://www.mermaid-tavern.com/taro/ipc/ip1/ipc_top.html" "Mozilla/5.0 (Linux; Android 9; ASUS_X01AD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.99 Mobile Safari/537.36"
SJISである。「エクセルバカ」
118.238.236.68 [19/Feb/2020:14:52:54 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek.php?fd=ipc&wd=%83G%83N%83Z%83%8B%83o%83J" "Mozilla/5.0 (Linux; Android 9; ASUS_X01AD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.99 Mobile Safari/537.36"
SJISである。
- 2020/03/19 -


GET方式のPHPの日本語引数/Firefoxの例

tpc_0060はSJISのコンテンツである。
Firefoxではそこから送出されたデータはSJISにはなっていないようである。

192.5.98.28 - - [31/Mar/2020:09:53:02 +0900] "GET /res/eseek.php?fd=tpc&wd=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%90%E3%82%AB HTTP/1.1" 200 36623 "http://www.mermaid-tavern.com/pluto/tpc/tp1/tpc_0060.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0"
UTF-8である。「エクセルバカ」
192.5.98.28 - - [31/Mar/2020:09:53:06 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek.php?fd=tpc&wd=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%90%E3%82%AB" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0"
192.5.98.28 - - [31/Mar/2020:09:53:06 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek.php?fd=tpc&wd=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%90%E3%82%AB" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0"


GET方式のPHPの日本語引数/Chromeの例

tpc_0060はSJISのコンテンツである。
Chromeではそこから送出されたデータはSJISにはなっている。

126.242.136.237 - - [04/Apr/2020:18:52:28 +0900] "GET /res/eseek.php?fd=tpc&wd=%83G%83N%83Z%83%8B%83o%83J HTTP/1.1" 200 36623 "http://www.mermaid-tavern.com/pluto/tpc/tp1/tpc_0060.html" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Vivaldi/2.2.1388.37"
SJISである。「エクセルバカ」
126.242.136.237 - - [04/Apr/2020:18:52:33 +0900] "GET /res/img/kw.gif HTTP/1.1" 200 129 "http://www.mermaid-tavern.com/res/eseek.php?fd=tpc&wd=%83G%83N%83Z%83%8B%83o%83J" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Vivaldi/2.2.1388.37"
126.242.136.237 - - [04/Apr/2020:18:52:34 +0900] "GET /res/img/hr.gif HTTP/1.1" 200 49 "http://www.mermaid-tavern.com/res/eseek.php?fd=tpc&wd=%83G%83N%83Z%83%8B%83o%83J" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Vivaldi/2.2.1388.37"