2016-11-11 1 views
1

Ich bin ein Anfänger in PHP. Ich versuche eine Variable zu drucken, die den Buchstaben "ñ" enthält, aber sie wird nicht korrekt gedruckt. Es erscheint ein Fragezeichen. Aber in der Anordnung druckt es ok. Warum ist das und wie kann ich es beheben? Meine Kodifizierung ist UTF-8, und dies ist mein CodeWie zeigt man das "ñ" Zeichen auf Variable in PHP

<?php header('content-type:text/html;charset=utf-8'); 

    $vowels = array('a', 'e', 'i', 'o', 'u'); 
    $consonants = array('b','c','d','f','g','h','j','k','l','m','n','ñ','p','q','r','s','t','v','w','x','y','z'); 
    $word = "wxyzñ"; 
    echo $word; 
    echo "<br>" . $word[4] . " " . $consonants[11] ; 

?> 

Das Wort $ druckt ok auch ohne den Header, aber wenn ich versuche, dass nur Zeichen im Wort zu bekommen, es funktioniert nicht. Und in der Anordnung druckt das "ñ" ok. Ich habe versucht, die Variable $ word in ein Array mit str_split, aber das gleiche Ergebnis zu konvertieren. Auch ich habe versucht mit den html_entities, aber das gleiche Ergebnis. Bitte helfen Sie. Vielen Dank!

+1

Verwenden Sie den HTML-Code: '& ntilde;' und so weiter? – Maximus2012

Antwort

0

UTF-8 ist eine Multibyte-Codierung. Das bedeutet, dass ein Zeichen durch mehr als ein Byte repräsentiert werden kann. Das Zeichen besteht tatsächlich aus zwei Bytes: C3 und B1. Mit $word[4] erhalten Sie nur C3, und C3 bedeutet nichts in UTF-8 (so dass Ihr Browser ein Fragezeichen stattdessen drucken). Was Sie tun sollten, ist die beiden Bytes zusammen zu holen. Sie können das mit mb_substr tun.

$char = mb_substr($word, 4, 1); 
+0

danke, aber es druckt das gleiche Fragezeichen – user2558831

+0

@ user2558831 Works für mich https://3v4l.org/aW0D8, wo ist dein Code? Hat 'echo $ word' die Zeichen korrekt ausgedruckt? – Federkun

+0

$ word druckt die Zeichen korrekt, auch wenn ich auf die elfte Position des Arrays zugreife, druckt es korrekt das Zeichen 'ñ', aber nicht wenn $ word [4] – user2558831