2009-11-07 3 views
17

Ich versuche herauszufinden, was genau diese php.ini Einstellungen tun. Was passiert, wenn sie auf unterschiedliche Werte eingestellt sind? Wann sind sie notwendig? Wann sind sie schädlich?Was machen diese PHP-Mbstring-Einstellungen?

Wie üblich, die PHP manual weniger als hilfreich.

EDIT: Nur um zu verdeutlichen, verstehe ich, wie Zeichenkodierungen arbeiten, und ich verstehe, wie PHP Multi-Byte-Funktionen von ihren Single-Byte-Gegenstücke unterscheiden. Ich suche nach Einzelheiten zu den obigen Einstellungen.

BEARBEITEN 2: OK, es sieht so aus, als ob sie tatsächlich mehr Dokumentation bieten als nur die page on runtime configuration, die nur einzeilige Zusammenfassungen hat. Die ersten drei davon haben ähnlich benannte Funktionen, und auf den Seiten, die die Funktionsversionen beschreiben, finden Sie weitere Einzelheiten. Ich habe die obigen Links hinzugefügt.

EDIT 3: Hinzufügen einer Prämie. Ich suche nach genauen Details, was diese Einstellungen genau machen, besonders die letzten drei. Was konvertieren sie von und zu und wann tun sie das?

+0

Sie sind sarkastisch über das Handbuch als weniger hilfreich, oder? –

+4

Ich denke, es ist sehr hilfreich, als Handbuch für PHP. Sie müssen auch HTTP und Zeichenkodierungen verstehen, um diese Einstellungen sinnvoll zu machen. Und das PHP-Handbuch ist kein Handbuch für eines dieser Dinge. –

+0

Re edit 2: Ich denke nicht, dass die ähnlichen Namen Funktionen hilfreich für Ihre Frage sind. Zum Beispiel bedeutet mb_language(), dass es nur die Kodierung von E-Mail-Nachrichten beeinflusst, während ich den Eindruck habe, dass mbstring.language einen breiteren Effekt hat. Und mb_http_input() * entdeckt * nur die Kodierung von Daten in der aktuellen HTTP-Anfrage, die nichts über die Einstellung von mbstring.http_input sagt. –

Antwort

7

Sie können mbstring.language in die Sprache ändern, mit der Sie arbeiten. (Source)

Sprache

; language for internal character representation. 
mbstring.language = Neutral ; Set default language to neutral(UTF-8) (default) 
mbstring.language = English 
mbstring.language = Japanese 
mbstring.language = Korean ;For Korean market later 

http_input

; http input encoding. 
mbstring.http_input = pass 
mbstring.http_input = auto 
mbstring.http_input = UTF-8 
mbstring.http_input = UTF-8, SJIS, EUC-JP 

http_output

; http output encoding. mb_output_handler must be 
; registered as output buffer to function 
mbstring.http_output = pass 
mbstring.http_output = UTF-8 

Codierung Übersetzung

; enable automatic encoding translation accoding to 
; mbstring.internal_encoding setting. Input chars are 
; converted to internal encoding by setting this to On. 
; Note: Do _not_ use automatic encoding translation for 
;  portable libs/applications. 
mbstring.encoding_translation = On 
3

Der Punkt ist die Unterstützung verschiedener Zeichensatzkodierungen. Es gibt eine große Vielfalt an Kodierungen (ASCII, ANSI, UTF-8, usw.) und jede hat unterschiedliche Zeichensätze und Anzahl von Bytes pro Zeichen. Die Einstellungen, die Sie betrachten, legen Standardkodierungen für verschiedene PHP-Funktionen fest.

PHP bietet eine Reihe von Funktionen, die Ihnen helfen, mit diesen verschiedenen Kodierungen richtig umzugehen. Schauen Sie sich für eine Illustration mb_strlen() vs strlen() an.

Kurze Antwort ist, Sie müssen sich wahrscheinlich keine Sorgen machen, es sei denn, Sie lokalisieren den Text Ihrer Anwendung oder kommunizieren mit Systemen mit verschiedenen Kodierungen (Ihre Datenbank ist dabei!).