[PHP/MySQL] Probleem met UTF-8 encoding Cyrillisch en Pools

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • basovic88
  • Registratie: December 2007
  • Niet online
Goede morgen,

Ik ben bezig met het meertalig maken van een website; onder andere in het Russisch (Cyrillisch alfabet) en Pools. Omdat alle tekst werd weergegeven in de browser als ????? ???? ???? heb ik naar aanleiding van Google en T.NET ([PHP5 + MySQL] UTF-8 tekst uit database verkeerd weergegeven en \[HTML/MySQL] Character-set werkt NET niet) de volgende stappen ondernomen:
  • Ik heb de MySQL database collatie ingesteld op utf8_general_ci.
    Hetzelfde geld voor alle tables en columns. Alle characters in phpMyAdmin worden prima weergegeven.
  • In de HTML heb ik de volgende META tag gebruikt:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  • Bij het connecten naar de MySQL database voer ik eerst de volgende queries uit:
    SET NAMES UTF8;
    SET CHARACTER SET UTF8;

    PHP:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    $pdoParams = array(
                    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;',
                    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET CHARACTER SET UTF8;'
                 );
    
    $params = array(
        'host' => 'localhost',
        'username' => '**',
        'password' => '**',
        'dbname' => '**',
        'driver_options' => $pdoParams
    );
    
    $db = Zend_Db::factory('PDO_MYSQL', $params);
    Zend_Db_Table_Abstract::setDefaultAdapter($db);
    Zend_Registry::set('db', $db);
Nu wordt de tekst niet meer weergegeven als ???? maar krijg ik het volgende te zien in de browser:
Директор/владелец предприÑ&#143;тиÑ&#143;

Het moet zijn:
Директор/владелец предприятия

Heeft iemand suggesties, tips of oplossingen voor mijn probleem?

[ Voor 14% gewijzigd door basovic88 op 30-11-2009 10:22 ]


Acties:
  • 0 Henk 'm!

  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 05-09 10:36

Dark Blue

Compositionista!

Alpenmeisje

Edit: lama, bij puntje 2 geef je al aan dat je in je HTML ook je charset aangeeft...

[ Voor 59% gewijzigd door Dark Blue op 30-11-2009 10:46 . Reden: Niet goed gelezen ]

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Dark Blue schreef op maandag 30 november 2009 @ 10:46:
Edit: lama, bij puntje 2 geef je al aan dat je in je HTML ook je charset aangeeft...
HTTP headers gaan nog altijd voor op HTML meta-directives, dus dat is wel een puntje dat nog gechecked kan worden.

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Hoe staan de instellingen van PHP / Apache? phpinfo() (meer bepaald HTTP_ACCEPT_CHARSET) Ik heb ooit eens iets gelijkaardig voorgehad met utf-8 / iso-8859-1 en ondanks dat in de code alles correct was waren de instellingen gewoon fout op de server.

Verder, als je bvb de pagina gaat bekijken met Firefox en je klikt rechts, Pagina-info bekijken, wat krijg je dan in de details te zien bij tekenset?

Acties:
  • 0 Henk 'm!

  • basovic88
  • Registratie: December 2007
  • Niet online
Verwijderd schreef op maandag 30 november 2009 @ 10:51:
Hoe staan de instellingen van PHP / Apache? phpinfo() (meer bepaald HTTP_ACCEPT_CHARSET) Ik heb ooit eens iets gelijkaardig voorgehad met utf-8 / iso-8859-1 en ondanks dat in de code alles correct was waren de instellingen gewoon fout op de server.

Verder, als je bvb de pagina gaat bekijken met Firefox en je klikt rechts, Pagina-info bekijken, wat krijg je dan in de details te zien bij tekenset?
HTTP_ACCEPT_CHARSET
ISO-8859-1,utf-8;q=0.7,*;q=0.7

FireFox Tekenset:
ISO-8859-1

Hier zit dus het probleem.
Maar hoe zorg ik ervoor dat dit UTF8 wordt? Want meer doen dan wat ik nu doe kan toch eigen niet?

EDIT:

Door dit bovenaan in mijn layout.phtml te plaatsen werkt het PERFECT!

PHP:
1
<?php header('Content-type: text/html; charset=utf-8') ?>


Bedankt iedereen!

[ Voor 9% gewijzigd door basovic88 op 30-11-2009 11:46 ]


Acties:
  • 0 Henk 'm!

  • Spiked
  • Registratie: Mei 2008
  • Laatst online: 24-07 14:50
De volgende regel in je script gebruiken (voor je output):
PHP:
1
header('Content-Type: text/html; charset=utf-8');

Acties:
  • 0 Henk 'm!

  • IntToStr
  • Registratie: December 2003
  • Nu online
Je kunt in PHP een header meesturen waarin je de charset aangeeft.

Je bestanden moeten verder ook wel in utf-8 opgemaakt zijn als je bijv. gebruik maakt van templates.

Volgende keer sneller typen dus...

[ Voor 7% gewijzigd door IntToStr op 30-11-2009 11:48 . Reden: te laat... ]

Pagina: 1