Solved

Delphi to mysql to html

Posted on 2012-04-12
6
469 Views
Last Modified: 2012-04-26
A user enters text into a Delphi program, Delphi puts it into a MySQL table. The charset is latin1. The collation is latin1_swedish_ci.

Then php put the data on a web page. Now there is a problem, Swedish characters turns into garbage. This probably can be fixed in the php end, but I would prefer that MySQL took care of this. MySql knows the charset and the collation, so I am looking for some MySQL command that translates this into HTML before it leaves the MySQL server.
0
Comment
Question by:Sunsales
6 Comments
 
LVL 24

Expert Comment

by:johanntagle
ID: 37840788
I don't know of any existing mysql function that does this (you can find all available string functions at http://dev.mysql.com/doc/refman/5.5/en/string-functions.html).

On the web page I think it is only a matter of setting the correct charset on the header.  Something like Content-Type: text/plain; charset=ISO-8859-1
0
 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 37841279
a database is a data storage/calculation device, not a display device

it is up to the display device to show things the way things should be shown
just imagine internet explorer automatically displaying all languages in chinees
> trying to solve this in the database wouldn't get you anywhere

displaying is a matter of correctly translating
> the database has no clue what language is used in the display device
0
 

Author Comment

by:Sunsales
ID: 37841380
> the database has no clue what language is used in the display device

The database collation is set to "latin1_swedish_ci", so the database knows what language is used, the theoretical either a php or a mysql functon is used to encode this to html. I don't see any harm in the MySQL team add a function to encode into html, it might even make MySQL more popular. Something like:

HtmlEncoded Select  * from TableAlfa where ....;


But when no such function exists, then il guess that PHP better take care of it.
0
NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

 
LVL 24

Expert Comment

by:johanntagle
ID: 37841409
Actually I think it will harm the reputation of the MySQL team if they prioritize adding such a feature over other more needed fixes.  Also, I doubt if it will be a popular feature, because the recommended practice is to decouple functionality, i.e. keep business/data logic and presentation logic separate.  This will also allow you to easily customize presentation to different types of devices i.e. desktop vs mobile browsers.

Please also note that the display of international characters also depends on what the page tells the browser what character set the content uses and whether the browser can support it.  This is clearly the business of presentation code.
0
 
LVL 37

Accepted Solution

by:
Geert Gruwez earned 400 total points
ID: 37841484
you set the collation to latin1_swedish_ci
> this means that a mapping will occur to this character set
the mapping is usually done by the client which has been configured to "know" what "the character set for displaying" (A) and "the character set in the db is" (B)

you can actually fool the client into believing that chinese (for "A) is actually swedish so it doesn't do any mapping
> this way you can store "chinese" in a swedish database
>> off course, when you use a client which hasn't been "fooled around with" it will do incorrect mappings and the display device will show garbage on screen
0
 
LVL 9

Expert Comment

by:rinfo
ID: 37842408
Try iconv while sending data to php.
you have to install iconv module.

iconv("ISO-8859-1,"UTF-8" //TRANSLIT", $yourdata);

However best thing would be to try and  mysql for UTF8 instead of latin1;
0

Featured Post

Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article discusses how to create an extensible mechanism for linked drop downs.
When table data gets too large to manage or queries take too long to execute the solution is often to buy bigger hardware or assign more CPUs and memory resources to the machine to solve the problem. However, the best, cheapest and most effective so…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to dynamically set the form action using jQuery.

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question