Migracja aplikacji php do obsługi UTF-8
Pracuję nad aplikacją wielojęzyczną w php.
Wszystko było w porządku, aż do niedawna poproszono mnie o wsparcie chińskich znaków. Działania podjęte w celu obsługi znaków UTF-8 są następujące:
Wszystkie tabele DB są teraz UTF-8
Szablony HTML zawierają tag<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Kontrolery wysyłają nagłówek określający kodowanie (utf-8) do wykorzystania w odpowiedzi http
Wszystko było dobrze, dopóki nie zacząłem robić manipulacji na sznurku (substr i lubi)
Z chińskim to nie zadziała, ponieważ chiński jest reprezentowany jako wielobajtowy, a więc jeśli zrobisz normalny podciąg (substr), to znacznie wyciąć „literę” w środku jednego z przydzielonych bajtów i f * ck w górę wynik na ekran.
Naprawiłem WSZYSTKIE moje problemy, dodając to w bootstrapie
mb_internal_encoding("UTF-8");
i zastąpienie wszystkichstrlen
, substr
, strstr
z ichmb_
odpowiedniki.
Co jeszcze muszę zrobić, aby w pełni obsługiwać UTF-8 w php?