Der folgende Beitrag wurde am 01. 10. 2004, 15:49 Uhr von Antman veröffentlicht.
Guten Tag Forum,
in meiner mySQL DB sind alle Daten im utf-8 codiert.
Folgende str_replace Funktion bereitet nun Ärger:
function returnContacts($public, $company_id)
{
$search = array("ä","ü","ö","ß");
$replace = array("ae","ue","oe","ss");
$res =& $this->_db->query("
SELECT id,
CONCAT(c.name_f, ' ', c.name_l) AS name,
CONCAT(c.name_f, '_', c.name_l) AS folder
FROM contacts c, lnk_company_contact lcc
WHERE (c.id = lcc.id_contact)
AND (c.public = '".$public."')
AND (lcc.id_company = '".$company_id."')
ORDER BY c.name_f");
while($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
$row['folder'] = str_replace($search, $replace, strtolower($row['folder']));
$employees[] = $row;
}
return $employees;
}
Steht in der DB ein "ä", so habe ich nach der Umwandlung ein schwarzes Viereck. Irgendwie scheint php unicode in einen anderen Zeichensatz umzuwandeln.
Der folgende Beitrag wurde am 01. 10. 2004, 17:15 Uhr von anarkist veröffentlicht.
probiers mal damit:
<?php
header('Content-type: text/html; charset=utf-8');
htmlentities('string to be encoded', ENT_QUOTES, 'utf-8');
?>
http://de3.php.net/manual/de/function.htmlentities.php
gruß
anarkist
Der folgende Beitrag wurde am 01. 10. 2004, 17:53 Uhr von Antman veröffentlicht.
Habe das strlower() mal entfernt. Nun ist die schwarze Box weg.
Allerdings macht folgende Funktion str_replace() GARNICHTS.
PHP:
$search = array("ä", "Ä", "ü", "Ü", "ö", "Ö", "ß");
$replace = array("ae", "ae", "ue", "ue", "oe", "o", "ss");
$row['folder'] = str_replace($search, $replace, $row['folder']);
Woran kann das liegen?
Der folgende Beitrag wurde am 02. 10. 2004, 01:04 Uhr von Sven Rautenberg veröffentlicht.
Moin!
> Habe das strlower() mal entfernt. Nun ist die schwarze Box weg.
>
> Allerdings macht folgende Funktion str_replace() GARNICHTS.
Simpel: Deine Umlaute werden nicht gefunden, weil du sie in $search nicht als UTF-8 codiert hast.
Wenn dein Editor kein UTF-8 beherrscht, hast du es natürlich schwer, dir aus den Unicode-Tabellen und den (eigentlich recht einfachen) Umsetzungsregeln für UTF-8 die passenden Zeichen selbst raussuchen zu müssen.
strtolower() funktioniert aus demselben Grunde nicht: Die Funktion erkennt die UTF-8-Zeichen nicht, sondern zerstört diese.
Du solltest dich deshalb mal über die "Multibyte String Functions" informieren: http://de3.php.net/mbstring Nur mit denen hast du überhaupt eine Chance, UTF-8 in PHP zerstörungsfrei zu bearbeiten (das reine durchreichen von Strings, deren Inhalt aber nicht verändert wird, geht mit PHP auch so sehr gut).
> PHP:
> $search = array("ä", "Ä", "ü", "Ü", "ö", "Ö", "ß");
- Sven Rautenberg
Der folgende Beitrag wurde am 04. 10. 2004, 13:20 Uhr von Antman veröffentlicht.
Hallo,
nun habe ich folgende php.ini in das Verzeichnis mit den Skripten gepackt und es klappt trotzdem nicht:
; Set default language
mbstring.language = Neutral; Set default language to Neutral(UTF-8) (default)
;; Set default internal encoding
;; Note: Make sure to use character encoding works with PHP
mbstring.internal_encoding = UTF-8 ; Set internal encoding to UTF-8
;; HTTP input encoding translation is enabled.
mbstring.encoding_translation = On
;; Set default HTTP input character encoding
;; Note: Script cannot change http_input setting.
mbstring.http_input = pass ; No conversion.
;; Set default HTTP output character encoding
mbstring.http_output = pass ; No conversion
mbstring.http_output = UTF-8 ; Set HTTP output encoding to UTF-8
;; Set default character encoding detection order
mbstring.detect_order = auto ; Set detect order to auto
mbstring.detect_order = UTF-8, ASCII, JIS; Specify order
Der folgende Beitrag wurde am 04. 10. 2004, 15:14 Uhr von Antman veröffentlicht.
Auf reiner sql Basis klappt es auch nicht:
$res =& $this->_db->query("
SELECT id,
REPLACE(REPLACE(REPLACE(REPLACE((CONCAT(c.name_f, ' ', c.name_l)), 'ö', 'oe'), 'ü', 'ue'), 'ä', 'ae'), 'ß', 'ss') AS name,
CONCAT(c.name_f, '_', c.name_l) AS folder
FROM contacts c, lnk_company_contact lcc
WHERE (c.id = lcc.id_contact)
AND (c.public = '".$public."')
AND (lcc.id_company = '".$company_id."')
ORDER BY c.name_f");
Aus dem gleichen Grund ?
Wer weiß die Lösung zu beiden Problemen ?
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4