mam (w bazie danych SQLite) następujący ciąg:PHP: Czy można poprawnie PODSTAWOWAĆ ciąg znaków UTF-8?
Лампа в вытяжке на кухне меняется, начиная с вытаскивания белого штырька справа.
Łańcuch jest prawidłowo wykazane przez PHP przy użyciu print
. Chciałbym uzyskać tylko pierwszych 50 znaków tego łańcucha, tj.
Лампа в вытяжке на кухне меняется, начиная с вытас
.
Próbowałem, używając zarówno substr i mb_substr i uzyskać
Лампа в вытяжке на кухне ме�
, to tylko 28 znaków.
Po przeczytaniu tutaj i gdzie indziej na temat problemów z mbstringiem, zdaję sobie sprawę, że jest to właściwie 50-bajtowy ciąg znaków (22 rosyjskie znaki = 44 bajty plus 5 spacji plus 1 symbol pytania).
Czy jest jakieś dobre rozwiązanie tego problemu? Wszystkie moje ciągi są UTF-8, więc mogłem oczywiście zaprogramować funkcję substr-siebie, sprawdzając pierwszy bit każdego bajtu itp. Ale to powinno być zrobione wcześniej, prawda?
AKTUALIZACJA: Uważam, że mb_substr
nie działa poprawnie, ponieważ mb_detect_encoding()
does not work properly.
Mówisz, że próbowałeś 'mb_substr', ale czy próbowałeś podać kodowanie? Czy na przykład 'mb_substr ($ string, 0, 10," UTF-8 ")' działa? – h2ooooooo
Upewnij się, że przekazałeś właściwe kodowanie do 'mb_substr' -' mb_substr ($ input, 0, 50, 'UTF-8') 'działa dla mnie,' mb_substr ($ input, 0, 50) 'nie działa. – DCoder
@ h2ooooooo: Nie, przegapiłem to w instrukcji. I tak. Dodaj komentarz jako odpowiedź, zaakceptuję to. – texnic