mysql:600
From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Tue, 19 Jan 1999 09:41:32 +0900
Subject: [mysql 00600] Re: PHP3 -> MySQL_SJIS ミニレポート
民斗です。 [Subject: [mysql 00598] PHP3 -> MySQL_SJIS ミニレポート] [Date: Tue, 19 Jan 1999 03:40:26 +0900 From:Masato Toyoshima] > ただし、氏名検索で「圭介」の字などを検索させると、結果は無事 > 返ってきますが、フォームの戻り値は、「圭\介」となっています。 > カラム名にも使用するとまずい文字がありそうな感じですね。 SJIS で「圭介」は「0x8c, "\", 0x89, 0xee」なので、マルチバイトを意識 しない処理系では、「\」が「圭」の二バイト目ということがわからないため、 特殊文字の「\」を打ち消すために「\\」に置き換えてしまいます。 「圭介」→「0x8c, "\"(0x5c), 0x89, 0xee」 →「0x8c, "\"(0x5c), "\"(0x5c), 0x89, 0xee」→「圭\介」 PHP は詳しくないですが、多分同じ理由だと思います。 > SQLのWHERE句は、”WHERE 氏名 like '%圭\介%'”となっていました。 > それでも無事圭介がヒットします。 > <良いような悪いような。何か考えられる問題って、ありますか? MySQL は SJIS 対応しているので、「圭\介」は「"圭"(0x8c5c), "\", "介"(0x89ee)」 と解釈されます。"\" は特殊文字で次の文字が特殊文字の場合その特殊機能を 打ち消すために使用されますが、この場合 "\" の次の「介」は特殊文字ではない ため、意味が無く無視されます。 ので、結果的には問題ないと思います。 -- 民斗 <tommy@xxxxxxxxxx>
598 1999-01-19 03:40 [Masato Toyoshima <to] PHP3 -> MySQL_SJIS ミニレポート 599 1999-01-19 04:07 ┣[Masato Toyoshima <to] 601 1999-01-19 09:57 ┃┗[民斗 <tommy@xxxxxxxx] 602 1999-01-19 13:09 ┃ ┣[Seiji tateyama <tate] 604 1999-01-19 21:47 ┃ ┃┗[Masato Toyoshima <to] 605 1999-01-19 21:47 ┃ ┗[Masato Toyoshima <to] 607 1999-01-20 12:48 ┃ ┗[民斗 <tommy@xxxxxxxx] 610 1999-01-20 16:25 ┃ ┗[Masato Toyoshima <to] -> 600 1999-01-19 09:41 ┗[民斗 <tommy@xxxxxxxx]