Anonymous | Login | Signup for a new account | 12-17-2024 08:52 PST |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||
0002676 | [Quercus] | minor | always | 05-19-08 08:06 | 05-29-08 16:38 | ||||
Reporter | ferg | View Status | public | ||||||
Assigned To | ferg | ||||||||
Priority | normal | Resolution | fixed | ||||||
Status | closed | Product Version | 3.1.6 | ||||||
Summary | 0002676: mysql multibyte character-set problem | ||||||||
Description |
(rep by wesley) PHP function mysql_query & mysql_fetch_xxxxx cannot handle myltibyte column data. I've test for resin version 3.1.5/3.1.6 and 3.2.0 snapshot, also mysql 4.1.22/5.0.51b/5.1.23rc/6.0.4/alpha as well as mysql-connector-java-3.1.14/5.1.x. This issue can be reproduced in every combination. Test case: ============test.php============ <?PHP //$db = mysql_connect("java:comp/env/jdbc/discuz"); // not ok either $db = mysqli_connect('127.0.0.1', 'root', 'password', 'test'); mysqli_query($db, 'SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary;'); $query = mysqli_query($db, 'SELECT * FROM test'); while($test = mysqli_fetch_assoc($query)) { echo $test['name']."\n"; } $db = mysql_connect('localhost', 'root', 'password'); mysql_query('SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary;', $db); mysql_select_db('test', $db); $query = mysql_query('SELECT * FROM test', $db); while($test = mysql_fetch_array($query, MYSQL_ASSOC)) { echo $test['name']."\n"; } ?> ================================= Output should be: &20320;&22909; &25105;&22909; &20320;&22909; &25105;&22909; Output now was: `} } `} } =============resin-web.xml=========== <web-app xmlns="http://caucho.com/ns/resin"> [^] <database> <jndi-name>jdbc/discuz</jndi-name> <driver type="com.mysql.jdbc.Driver"> <url>jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8</url> [^] <!-- not ok either <url>jdbc:mysql://localhost:3306/test</url> [^] --> <user>root</user> <password>password</password> <init-param characterEncoding="UTF-8" /> <init-param useUnicode="true" /> </driver> <max-connections>200</max-connections> </database> <servlet-mapping url-pattern="*.php" servlet-class="com.caucho.quercus.servlet.QuercusServlet"> <init> <database>java:comp/env/jdbc/discuz</database> <script-encoding>UTF-8</script-encoding> <compile>false</compile> <php-ini> <unicode.runtime_encoding>UTF-8</unicode.runtime_encoding> <unicode.output_encoding>UTF-8</unicode.output_encoding> </php-ini> </init> </servlet-mapping> <welcome-file-list> <welcome-file>index.php</welcome-file> </welcome-file-list> </web-app> ================================= ============mysql db script=========== -- MySQL dump 10.13 Distrib 5.1.24-rc, for Win32 (ia32) -- -- Host: localhost Database: test -- ------------------------------------------------------ -- Server version 5.1.24-rc-community /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `test` -- DROP TABLE IF EXISTS `test`; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; CREATE TABLE `test` ( `name` varchar(20) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; SET character_set_client = @saved_cs_client; -- -- Dumping data for table `test` -- LOCK TABLES `test` WRITE; /*!40000 ALTER TABLE `test` DISABLE KEYS */; INSERT INTO `test` VALUES (0xe4bda0e5a5bd); INSERT INTO `test` VALUES (0xe68891e5a5bd); /*!40000 ALTER TABLE `test` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; |
||||||||
Additional Information | |||||||||
Attached Files | |||||||||
|
Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
31 total queries executed. 28 unique queries executed. |