![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem z substr, wyciagam z tekstu pierwsze 128 znakow wlasnie przez substr lecz gdy ostatnim znakiem w ciagu jest ąćśęół itp to na końcu wyświetla mi się takie cos: �. Jak to mozna obejsc ? moze jest inny sposob na wyciagniecie X pierwszych znakow z ciagu ?
Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo rozumie, tekst mam w $tekst. Kod wyglada tak: substr($tekst, 0, 128)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Sorki, nie wiem czemu pomyślałem o odczycie z pliku...
Kodowanie w pliku masz na pewno dobre? Może nie wysyłasz nagłówka do przeglądarki o kodowaniu? -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kodowanie jest ok, wszystkie polskie znaki sie wyswietlaja tylko jezeli ten 128my znak to znak polski to wtedy zamiast niego wyswietla sie �.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam, mam problem z substr, wyciagam z tekstu pierwsze 128 znakow wlasnie przez substr lecz gdy ostatnim znakiem w ciagu jest ąćśęół itp to na końcu wyświetla mi się takie cos: �. Jak to mozna obejsc ? moze jest inny sposob na wyciagniecie X pierwszych znakow z ciagu ? Pozdrawiam multibyte substring -> mb_substr -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
To samo jest.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 6.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
zdaje się ze można iterować:
czytałem gdzieś kiedyś ale nigdy nie testowałem Ale to i tak nic nie da, bo to wyciąga pojedyńcze bajty ze stringu. A znaki taki jak ą, ę, ć składają się z dóch bajtów. Użycie mb_string oraz wybór prawidłowego kodowania musi przynieść oczekiwany rezultat. Ale oczywiście wygodniej jest napisać, że to samo jest i czekać na gotowe rozwiązanie z przykładem. -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ale co tu ma kodowanie skoro to wyglada tak: [...]teraźniejszoś�. Jakby zalezalo od kodowanie to by w tym wyrazie nie bylo ani ź ani ś tylko wszystkie polskie znaki posypalby sie, nie byloby tak ?. To � to dokladnie 128znak, zamiast tego powinno byc ć.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Ale co tu ma kodowanie skoro to wyglada tak: [...]teraźniejszoś�. Jakby zalezalo od kodowanie to by w tym wyrazie nie bylo ani ź ani ś tylko wszystkie polskie znaki posypalby sie, nie byloby tak ?. To � to dokladnie 128znak, zamiast tego powinno byc ć.
zdziwiony? Edit: � - ten znaczek, to nic innego jak połowa polskiego znaku. Ten post edytował flashdev 26.08.2009, 14:08:06 -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 300 Pomógł: 32 Dołączył: 31.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
flashdev udzielił prawidłowej i wyczerpującej odpowiedzi, może zamiast szukać dziury w całym zastosujesz się do jego rady?
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
@flashdev, Zdziwiony
![]() Temat do zamknięcia. Ten post edytował maro123 26.08.2009, 14:16:38 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Problemem jest funkcja substr. Polskie znaki diakrytyczne są przechowywane nie na 1 (jak większość) ale 2 bajtach. Powoduje to zamieszanie gdy masz choćby słowo: gęśla (1-2-2-1-1), co daje 7 bajtów zamiast 5. Nie jest to także zamieniane na 10 bajtów dla równości (5x2 bajty) Stąd przy używaniu substr w polskich znakach jest bajzel. flashdev udzielił odpowiedzi jak to rozwiązać i na chwilę obecną nie ma skuteczniejszej metody - tylko mb_substr. Szkoda tylko, że jest wolniejsza zazwyczaj, co nie ucieszy miłośników zwiększania wydajności.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 05:41 |