Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP, MySQL ja merkistöt

lrp [17.07.2009 17:00:28]

#

SHOW VARIABLES LIKE 'character\_set_%'

Tulostaa näin

Variable_name 	             Value
character_set_client 	     latin1
character_set_connection     latin1
character_set_database 	     latin1
character_set_filesystem     binary
character_set_results 	     latin1
character_set_server 	     latin1
character_set_system 	     utf8
character_sets_dir 	     /usr/share/mysql/charsets/

php sovelluksessa on

define('CHARSET', 'iso-8859-1');

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

Kun tallennan tietokantaan äijien öikutin, niin se on siellä tän näköisenä

mysql> select products_description from products_description where products_description.products_id = '28';
+----------------------+
| products_description |
+----------------------+
| &#65533;ijien &#65533;ikutin       |
+----------------------+
1 row in set (0.00 sec)

mysql>

php sovellus kyllä tulostelee ääkköset oikein. Halauaisin kuitenkin nähdä ääkköset kannassakin. Keskustelupalstan softa taitaa estää tallentamasta mustaa palloa, missä on kyssäri keskellä.

Metabolix [17.07.2009 20:18:49]

#

Tietokantayhteydelle pitää asettaa oikea merkistö, ja lisäksi tietokannan taulut kannattaa luoda käyttämään toivottua merkistöä. Nyt taitaa olla niin, että MySQL yrittää tulkita merkkisi UTF-8:na, jolloin ääkköset aiheuttavat virheen ja tallentuukin merkki �.

lrp [17.07.2009 21:31:14]

#

Kokeilin muutamalla eri tavalla

<?php
function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
    global $$link;

    if (USE_PCONNECT == 'true') {
      $$link = mysql_pconnect($server, $username, $password);
    } else {
      $$link = mysql_connect($server, $username, $password);
    }
    //mysql_set_charset('latin1',$$link);
    if ($$link) mysql_select_db($database);
    //mysql_query("SET CHARACTER SET latin1");
    //$charset = mysql_client_encoding($$link);

//echo "The current character set is: $charset\n";
    mysql_query("SET NAMES 'latin1'");
    return $$link;

  }?>

Ei menestystä &#65533; kummittelee edelleen.
Hassu juttu, että php sovelluksessa ääkköset näkyy oikein. Ei kuitenkaan jos katselee tietokantaa phpmyadminilla tai päätteessä.
Kyseessä on oscommerce toi kommenteissa oleva echo antoi latin1

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta