OSDN Git Service

Preventing I/O strings from auto-detecting the charactor encodings by MySQL, refering...
authorsakamocchi <sakamocchi@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Thu, 20 Jan 2011 04:05:22 +0000 (04:05 +0000)
committersakamocchi <sakamocchi@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Thu, 20 Jan 2011 04:05:22 +0000 (04:05 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/nucleus-jp/trunk@1103 1ca29b6e-896d-4ea0-84a5-967f57386b96

utf8/nucleus/libs/globalfunctions.php

index b56e67d..886be6a 100755 (executable)
@@ -376,6 +376,44 @@ if (!encoding_check(false, false, _CHARSET)) {
 }\r
 \r
 /*\r
+ * for preventing I/O strings from auto-detecting the charactor encodings by MySQL\r
+ * since 3.62_beta-jp\r
+ * Jan.20, 2011 by kotorisan and cacher\r
+ * refering to their conversation below,\r
+ * http://japan.nucleuscms.org/bb/viewtopic.php?p=26581\r
+ * \r
+ * NOTE:       shift_jis is only supported for output. Using shift_jis in DB is prohibited.\r
+ * NOTE:       iso-8859-x,windows-125x if _CHARSET is unset.\r
+ */\r
+if (in_array('mysql',$MYSQL_HANDLER)) {\r
+       switch(strtolower(_CHARSET)){\r
+               case 'utf-8':\r
+                       $charset = 'utf8';\r
+                       break;\r
+               case 'euc-jp':\r
+                       $charset = 'ujis';\r
+                       break;\r
+               case 'gb2312':\r
+                       $charset = 'gb2312';\r
+                       break;\r
+               case 'shift_jis':\r
+                       $charset = 'sjis';\r
+                       break;\r
+               default:\r
+                       $resource = sql_query("show variables LIKE 'character_set_database'");\r
+                       $fetchDat = sql_fetch_assoc($resource);\r
+                       $charset  = $fetchDat['Value'];\r
+                       break;\r
+       }\r
+       $mySqlVer = implode('.', array_map('intval', explode('.', sql_get_server_info($MYSQL_CONN))));\r
+       if ($mySqlVer >= '5.0.7' && function_exists('mysql_set_charset')) {\r
+               mysql_set_charset($charset);\r
+       } elseif ($mySqlVer >= '4.1.0') {\r
+               sql_query("SET CHARACTER SET " . $charset);\r
+       }\r
+}\r
+\r
+/*\r
        Backed out for now: See http://forum.nucleuscms.org/viewtopic.php?t=3684 for details\r
 \r
 // To remove after v2.5 is released and language files have been updated.\r