charsets in mysql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

01/02/2013 12:57:59
Quote Anchor link
Beste mensen,

Ik krijg af en toe wat vreemde tekens terug uit de database op mijn website. Mijn website heeft:
Quote:
<meta charset="utf-8" />


Nu kijk ik in phpmyadmin bij de instellingen en kom ik onderstaande tabel tegen. Een ratjetoe aan charsets (zie onderstaand). Geen idee waar ze allemaal voor dienen. Maar wie kan aangeven welke waarden het zouden moeten zijn en hoe/waar ik ze kan instellen.

Quote:
character set client utf8
(Globale waarde) latin1
character set connection utf8
(Globale waarde) latin1
character set database latin1
character set filesystem binary
character set results utf8
(Globale waarde) latin1
character set server latin1
character set system utf8
character sets dir /usr/share/mysql/charsets/
collation connection utf8_unicode_ci
(Globale waarde) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci
 
PHP hulp

PHP hulp

22/12/2024 09:06:48
 
Ward van der Put
Moderator

Ward van der Put

01/02/2013 13:03:53
Quote Anchor link
Je kunt de karakterset instellen met mysqli_set_charset() na het openen van een databaseverbinding. Let op dat je hierbij de karakterset 'utf8' zonder streepje gebruikt in de syntaxis van MySQL.
 

01/02/2013 14:07:23
Quote Anchor link
Beste Ward,

Kan het niet via phpmyadmin? En moet ik alles op utf8 zetten?

Jop

PS mooi kookboek had je geschreven.
 
Ward van der Put
Moderator

Ward van der Put

01/02/2013 14:39:47
Quote Anchor link
J Pla op 01/02/2013 14:07:23:
Kan het niet via phpmyadmin? En moet ik alles op utf8 zetten?

Je moet UTF-8 instellen op drie niveaus:

1. in de MySQL-database per database, tabel of kolom (dat kan inderdaad met phpMyAdmin);

2. voor elke databaseverbinding met mysqli_set_charset();

3. in elke webpagina.

In de webpagina gebruik je nu alleen een meta-tag, maar vul dat voor maximale compatibiliteit met oudere browsers aan tot:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">

Voor een echte HTTP-header (in plaats van een HTTP-equivalent in HTML) gebruik je in PHP:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header('Content-Type: text/plain; charset=UTF-8');
?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/02/2013 16:18:32
Quote Anchor link
In PMA zit dit voor de database en tabellen onder de knop operations.
In SQL kan het ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
ALTER TABLE thetable
DEFAULT CHARACTER SET=utf8
COLLATE=utf8_general_ci
 

02/02/2013 23:50:07
Quote Anchor link
hmmm, ik ben een beetje blond

@Ger: als ik jouw SQL commando's draai in de SQL module van PHPMyAdmin zie ik niets veranderen. Kolommen met collatie utf8_unicode_ci worden geen general. Of moet ik dat handmatig per kolom nog een keer instellen?

Daarnaast blijf ik (in PMA bij variabelen) nog steeds latin 1 en swedish zien. Maakt dat niets uit dan?

@Ward
Kan ik mysqli commando's gebruiken als ik niet met objecten werk? Ik gebruik mysql_connect en mysql_select_db om de verbinding op te zetten. Ik begrijp dat ik na het selecteren van de database de volgende php-code toe moet voegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysqli_set_charset($db,"utf8");

Of zie ik dit helemaal verkeerd.

Daarna moet ik mijn website inderdaad nog in UTF 8 zetten. Ik heb "<meta charset="UTF-8">" er al instaan, maar zal de andere regel ook toevoegen voor oudere browsers.

Tenslotte moet ik ook nog boven aan het eerste php bestand dat ik op roep (bv index.php?page=1002) de php code voor header zetten zoals jij aan geeft? Of is het dan dubbel op? En moet dat alleen in index.php of ook alle php bestanden die binnen index weer worden opgeroepen?

Alvast bedankt voor jullie gewaardeerde reactie.

Toevoeging op 03/02/2013 00:06:23:

Aanvullend:
Ik lees ergens dat je voor php ook in apache kan instellen dat alles in utf8 gaat. Dan zou ik in de file:
Quote:
/etc/apache2/conf.d/charset

De regel:
Quote:
AddDefaultCharset UTF-8

toe moeten voegen. Klopt dat en wat bereik ik er mee?
 

06/02/2013 11:47:31
Quote Anchor link
Hoi allemaal,

Heeft er nog iemand een reactie op mijn laatste vragen?

Jop
 
Roy -

Roy -

06/02/2013 13:58:38
Quote Anchor link
Misschien wat kort door de bocht, zie: http://royduineveld.nl/blog/php/103/utf-8-karakterset/
 

06/02/2013 15:09:17
Quote Anchor link
Dank je Roy, het lijkt dat de meeste vragen daarmee wel beantwoord worden. Wel toch een paar vragen:

Wat bedoel je met:
Quote:
Met PHP is het belangrijk om bij alle functies waar een encoding opgegeven kan worden, dit op te geven.

Met de functies die je in het voorbeeld noemt maakt je toch samperamp codes?

Tenslotte:
mag ik mysql en mysqli commando's door elkaar gebruiken? en wat is het verschil er tussen?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.