473,382 Members | 1,349 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,382 software developers and data experts.

Problem With MySQL 4.1.x and Unicode (UTF8)

i have a problem with MySQL 4.1.x and UTF8.
in version 4.0, i'm using html forms with utf8 charset for inserting
unicode strings. but in version 4.1.x it is not working! if i change the
charset of column,

ALTER TABLE `icons` CHANGE `name_farsi` `name_farsi` VARCHAR( 99 )
CHARACTER SET utf8 COLLATE utf8_persian_ci DEFAULT NULL

and change default charset of database like below code :

mysql_query("SET CHARACTER SET utf8");

-i see somthing like below (the strings in that columns are in utf8
format) :

$link=mysqli_connect('localhost','root',null,'data base');
mysqli_query($link, "SET CHARACTER SET utf8");
if ($result = mysqli_query($link, "SELECT name_farsi FROM icons order by
name_farsi"))
{
$charset = mysqli_character_set_name();
while ($row = mysqli_fetch_row($result)) {
echo("$row[0]"."<br>");
}
mysqli_free_result($result);
}
-----result-----
بیمارستان
راهنمای تور
تورها
کشتی رانی
فرودگاه

you can see the last line of above result, it's correct, becuse i inserted
this record with phpMyAdmin v2.6.0. but the other result as you see, are
not readable.

when i trying to insert a record with below way :
INSERT INTO `icons` ( `name_farsi`) VALUES
('سلام');
-----result----
???
ÓáÇã
بیمارستان
راهنمای تور
تورها
کشتی رانی
فرودگاه
as you see, the first line is not readable. if i convert that value to
utf8 with utf8_encode(), i will see somthing between first result and end
result!
if i does not set default char set of ("SET CHARACTER SET utf8"), the
result is :
???
بیمارستان
راهنمای تور
تورها
کشتی رانی
???????

but this results , does not sort correctly! it is like that i'm using
MYSQL 4.0 not MySQL 4.1.x
how can i solve this problem?!
please help me.
-----------------------------
-- Table structure for table `icons`
--

CREATE TABLE `icons` (
`id` int(6) unsigned NOT NULL auto_increment,
`name` varchar(100) character set latin1 default NULL,
`name_farsi` varchar(100) character set utf8 collate utf8_persian_ci
default NULL,
`filename` varchar(100) character set latin1 default NULL,
`sort_number` int(100) default NULL,
`comment` varchar(255) character set latin1 default NULL,
`comment_farsi` varchar(255) character set latin1 default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `icons` VALUES (3, 'Airport',
'فرودگاه', '3d
icon/airport.gif', NULL, NULL, NULL);
INSERT INTO `icons` VALUES (4, 'Tour Guide', 'تورها',
'icon/eghamati.gif', NULL, NULL, NULL);
INSERT INTO `icons` VALUES (5, 'Hospital',
'بیمارستان', 'bimarestan.gif', NULL, NULL,
NULL);
INSERT INTO `icons` VALUES (6, 'Tours', '?', 'toor.gif', NULL, NULL,
NULL);
INSERT INTO `icons` VALUES (7, 'Ships', '?', 'kashtirani.gif', NULL, NULL,
NULL);

Jul 17 '05 #1
4 5025
sinasalek wrote:
i have a problem with MySQL 4.1.x and UTF8.
in version 4.0, i'm using html forms with utf8 charset for inserting
unicode strings. but in version 4.1.x it is not working! if i change the
charset of column,

ALTER TABLE `icons` CHANGE `name_farsi` `name_farsi` VARCHAR( 99 )
CHARACTER SET utf8 COLLATE utf8_persian_ci DEFAULT NULL

and change default charset of database like below code :

mysql_query("SET CHARACTER SET utf8");

[el snip-o-rama!]

I ran into the exact same problem some weeks back, and I've found that,
for MySQL 4.1.x, x > 2, you have to use the following command to get the
connection working properly:

$mysqli->query("SET NAMES 'utf8'");

which I suppose would be:

mysql_query($link, "SET NAMES 'utf8'");

there are four places you have to worry about charset:

1. in your PHP script (set mbstring in PHP.ini to Unicode)
2. in your database (looks like you got that covered)
3. in the CONNECTION to your database (SET NAMES 'utf8')
4. in the output to the client browser.
good ruck!

mark.


--
I am not an ANGRY man. Remove the rage from my email to reply.
Jul 17 '05 #2
hi,
many thanks for your help.
i tested your suggestion. but my problem not solved.
My CODE :
ini_set('mbstring.internal_encoding','UTF-8');
ini_set('mbstring.http_input','UTF-8');
ini_set('mbstring.http_output','UTF-8');
ini_set('mbstring.internal_encoding','UTF-8');

$link=mysqli_connect('localhost','root',null,'data base');
//set character sets
mysqli_query($link, "SET CHARACTER SET utf8");
mysqli_query($link, "SET NAMES 'utf8'");
//encdoe and then insert a persian work to "name_farsi" field.
mysqli_query($link, "INSERT INTO `icons` ( `name_farsi`) VALUES
('".utf8_encode('بهار')."');");
//print records
if ($result = mysqli_query($link, "SELECT name_farsi FROM icons order by
name_farsi"))
{
while ($row = mysqli_fetch_row($result)) {
echo $row[0]."<br>";
}

mysqli_free_result($result);
}
------------------------------------------------------------------------------------------------------------------------
i really confused and i don't know where is the problem!!
you told me "I ran into the exact same problem some weeks back", can you
tell me, what was your problem,exactly? please.
or can you give me, part of your code, like above code?
or is there any forum that you were write about your problem?
or is there any article about this problem?
i will be very glad , if you answer my questions.
(sorry for my bad english, and my strange questions)

Jul 17 '05 #3
Gergely Temesi <tg******@freemail.hu> send an email to me about this
problem, and he noticed some important things.
this problem solved with Mark <mw@ANGRYLanfear.com> and Gergely help.

Mark's solution :
1. in your PHP script (set mbstring in PHP.ini to Unicode)
2. in your database (looks like you got that covered)
3. in the CONNECTION to your database (SET NAMES 'utf8')
4. in the output to the client browser.

Gergely wrote to me :
He(Mark) missed only one thing: your text editor has to be set to UTF-8!
For example in WinXP NotePad -> File -> Save as… -> Character coding
-> UTF-8 (… or something like this in your own language).

below example can explain solution clearly :
---------------------------------------------------------------------------------------------
I added Gergely's solution to Mark's solution, and problem solved.
here is my code (php file that contain below code is encoded by utf8) :

<?php
//this below three lines are not necessary, i tested without them and
everything worked correctly.
ini_set('mbstring.internal_encoding','UTF-8');
ini_set('mbstring.http_input','UTF-8');
ini_set('mbstring.http_output','UTF-8');

$link=mysqli_connect('localhost','root',null,'test ');
//set character sets
mysqli_query($link, "SET CHARACTER SET utf8");
mysqli_query($link, "SET NAMES 'utf8'");

//insert a persian word to "name|farsi" field.
mysqli_query($link,"INSERT INTO `test` ( `name|farsi`) VALUES ('utf8
string-->تست')");
//print records
if ($result = mysqli_query($link, "SELECT `name|farsi` FROM test order by
`name|farsi`"))
{
while ($row = mysqli_fetch_row($result))
echo $row[0]."<br>";
mysqli_free_result($result);
}
?>

unbelievable, problem was my PHP Editor !!!!, i'm using Zend Studio and
this PHP editor can't handle utf8!
as Gergely told i tested with notepad , and i could insert a record with a
UTF8 field easily and correctly!
---------------------------------------------------------------------------------------------
good luck friends

Jul 17 '05 #4
Gergely Temesi <tg******@freemail.hu> send an email to me about this
problem, and he noticed some important things.
this problem solved with Mark <mw@ANGRYLanfear.com> and Gergely help.

Mark's solution :
1. in your PHP script (set mbstring in PHP.ini to Unicode)
2. in your database (looks like you got that covered)
3. in the CONNECTION to your database (SET NAMES 'utf8')
4. in the output to the client browser.

Gergely wrote to me :
He(Mark) missed only one thing: your text editor has to be set to UTF-8!
For example in WinXP NotePad -> File -> Save as… -> Character coding
-> UTF-8 (… or something like this in your own language).

below example can explain solution clearly :
---------------------------------------------------------------------------------------------
I added Gergely's solution to Mark's solution, and problem solved.
here is my code (php file that contain below code is encoded by utf8) :

<?php
//this below three lines are not necessary, i tested without them and
everything worked correctly.
ini_set('mbstring.internal_encoding','UTF-8');
ini_set('mbstring.http_input','UTF-8');
ini_set('mbstring.http_output','UTF-8');

$link=mysqli_connect('localhost','root',null,'test ');
//set character sets
mysqli_query($link, "SET CHARACTER SET utf8");
mysqli_query($link, "SET NAMES 'utf8'");

//insert a persian word to "name|farsi" field.
mysqli_query($link,"INSERT INTO `test` ( `name|farsi`) VALUES ('utf8
string-->تست')");
//print records
if ($result = mysqli_query($link, "SELECT `name|farsi` FROM test order by
`name|farsi`"))
{
while ($row = mysqli_fetch_row($result))
echo $row[0]."<br>";
mysqli_free_result($result);
}
?>

unbelievable, problem was my PHP Editor !!!!, i'm using Zend Studio and
this PHP editor can't handle utf8!
as Gergely told i tested with notepad , and i could insert a record with a
UTF8 field easily and correctly!
---------------------------------------------------------------------------------------------
good luck friends

Jul 17 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Aditya Ivaturi | last post by:
We have a CMS which is written is based on php & mysql. Recently we received a request to support multiple languages so that sites in that particular laguage can be created. I did some search on...
8
by: Bill Eldridge | last post by:
I'm trying to grab a document off the Web and toss it into a MySQL database, but I keep running into the various encoding problems with Unicode (that aren't a problem for me with GB2312, BIG 5,...
0
by: Stormblade | last post by:
Hey all, I have an existing JSP web application which retrieved data from a SQLServer database and displayed it. The data contained Unicode chars. This worked fine. I changed databases/JDBC...
15
by: Peter Afonin | last post by:
Hello, I'm struggling with the string conversion to MD5 which I've never user before. I have a string that I need to encode which looks approximately like this: ...
18
by: Ger | last post by:
I have not been able to find a simple, straight forward Unicode to ASCII string conversion function in VB.Net. Is that because such a function does not exists or do I overlook it? I found...
1
by: Marcus | last post by:
Hello, I recently upgraded from 4.0 to 4.1. I've spent the last few days reading up on charsets since I never really thought about it when I used 4.0. I thought I had most of it figured out,...
8
by: Daz | last post by:
Hi everyone. I was faced with the choice of whether my problem is indeed a PHP problem or a MySQL. I have decided it's a PHP problem as I don't experience the same problem when I execute the...
3
by: Robin Becker | last post by:
I am seeing different outcomes from simple requests against a common database when run from a freebsd machine and a win32 box. The test script is ####################### import MySQLdb, sys...
1
by: erikcw | last post by:
Hi, I'm trying to insert some data from an XML file into MySQL. However, while importing one of the files, I got this error: Traceback (most recent call last): File "wa.py", line 304, in ?...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.