Hi again.

I have a project that gets from mysql the data that i search.
Until 10 minutes ago, the results could not display me correctly the Greek characters from mysql.
The search system searches the title of the item which contains English and Greek characters.

I solve this problem with this :
I use notepad for any encoding i do between ansi, unicode and utf8.
I wrote into notepad the title in English and for the Greek letters i wrote them in HTML encoded characters and i saved it as ANSI.

On phpmyadmin I uploaded the file choosing utf8 for Character set of the file and ANSI for sql compatibility.

i searched for that English word i wrote in the title and displayed to me the result WITH GREEK LETTERS correctly.
This is the only way to display Greek letters. I tried everything.

The problem is :
When i searched using that Greek letters that i wrote in the title the result showed me nothing. Then i searched again using the HTML encoded characters i used for that title and i got the result with Greek letters!

Having in mind that with HTML encoded characters the system found me the result, I guess there must be a line that it will convert the Greek characters to HTML encoded characters before it gives me the results.

Anyone knows anything about this?

Recommended Answers

All 6 Replies

Check database table. What's its collation? UTF8_*?

Yes all are encoded to utf8. from the database to all pages

My greek data is written in the database using the decimal format http://htmlhelp.com/reference/html40/entities/symbols.html

The only way to get the results displayed is when i search with those decimal codes.

I want to convert the greek letters that i write in the searchbox to those decimal codes before it gives me the results, with this way i will get the correct search results.

You need to convert input search data to html entities before you find in database. php.net/htmlentities

i did that.. i guess i do not know where to put it in my code.

/* generate query syntax for searching in auction */
$search_words = explode (" ", $qquery);

/* query part 1 */
$qp1 = "";
$qp = "";
$qp1 = htmlentities($qp1);
$qp1 .=
" (title LIKE '%".
addslashes($qquery).
"%' OR id=".intval($q).")  ";

$qp .= " (cat_name LIKE '%".addslashes($qquery)."%') ";

$addOR = true;
while ( list(,$val) = each($search_words) ) {
	$val = ereg_replace("%","\\%",$val);
	$val = ereg_replace("_","\\_",$val);
	if ($addOR) {
		$qp1 .= " AND ";
		$qp .= " AND ";
	}
	$addOR = true;
	
	$qp1 .=
	" (title LIKE '%".
	addslashes($val).
	"%')  ";
	
	$qp .= "(cat_name LIKE '%".addslashes($qquery)."%') ";
}
//	die($qp1);
//	print $qp."<BR>";

$sql_count = "SELECT count(*) FROM PHPAUCTIONXL_auctions 
				WHERE ( $qp1 ) 
				AND ( closed='0')  
				AND ( suspended='0') 
				AND private='n' 
				AND	starts<=".$NOW." 
				ORDER BY buy_now";
$sql = "SELECT * FROM PHPAUCTIONXL_auctions 
			WHERE ( $qp1 ) 
			AND ( closed='0')  
			AND ( suspended ='0') 
			AND private='n' 
			AND	starts<=".$NOW." 
			ORDER BY buy_now";

what kind f mysql server do you use???? aw regardless to the version of mysql server you can use a simple php code to solve your problem like the str_replae();
you can replace the Greek char with some ASCI code before saving it
ans when you retrieve it you can replace it back ... if you have many chars you can make a switch case it is really simple... and you can put it online as a software every string goes and comes from and to the database will be converted to some string if it's a Greek letter

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.