Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problematyczne znaki podczas zamiany strony kodowej
marcini82
post 19.01.2007, 08:51:38
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 1
Dołączył: 20.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam!

Musze zamienic kodowanie tekstu z UTF-8 na ISO-8859-2 przed zapisem do bazy.
Problem w tym, ze ten tekst czesto zawiera nieobslugiwane cudzyslowy skopiowane z Worda, o takie:
Cytat
„ ”

Jak uzywam do konwersji mbstring to zamienia te cudzyslowy na znaki zapytania, a jak uzyje iconv to mi wywali blad ze tekst zawiera nieobslugiwane znaki.
Probowalem zamienic te cudzyslowy na zwykle (ktore moge wklepac z klawiatury) za pomoca str_replace, ale Eclipse mi nie chce w ogole zapisac pliku php bo tych znakow nie moze zapisac w kodowaniu ISO.

Co z tym zrobic? Jak to zamienic na zwykly cudzyslow?

Moge ostatecznie kazac mbstring je usunac za pomoca
Kod
ini_set('mbstring.substitute_character', 'none');

ale to nie jest dobre wyjscie.

Ten post edytował marcini82 19.01.2007, 08:59:48
Go to the top of the page
+Quote Post
ghash
post 19.01.2007, 13:30:40
Post #2





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 5.11.2006
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Takie coś znalazłem w funkcjach szablonowych w EdHTML.
Ale te funkcje tylko zmieniają kodowanie jedynie z win1250 i iso8859.


$string = strtr($string, "\xA1\xA6\xAC\xB1\xB6\xBC", "\xA5\x8C\x8F\xB9\x9C\x9F"); //ISO8859-2 -> WIN-1250
lub
$string = strtr($string, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC"); //WIN-1250 -> ISO 88592

Może to cię jakoś naprowadzi:)
Go to the top of the page
+Quote Post
marcini82
post 19.01.2007, 14:38:37
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 1
Dołączył: 20.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Dzieki, naprowadzilo mnie o tyle, ze jesli znalbym taki kod w stylu
Cytat
\xf3

dla tych "zlych" cudzyslowow i dla zwyklego, to moglbym to zamienic.

Tylko jak odczytac taki kod dla wybranego znaku?
Go to the top of the page
+Quote Post
cadavre
post 19.01.2007, 16:50:51
Post #4





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Tutaj są entitiesy HTML'a oparte o powyższy zapis:

http://www.w3schools.com/tags/ref_entities.asp

To co potrzebujesz to najprawdopodobniej:
left double quotation mark i right double quotation mark

Tutaj szczegółowo: http://www.fileformat.info/info/unicode/char/201c/index.htm

Ten post edytował cadavre 19.01.2007, 16:51:48


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
marcini82
post 25.01.2007, 12:23:51
Post #5





Grupa: Zarejestrowani
Postów: 190
Pomógł: 1
Dołączył: 20.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Poszukiwane przeze mnie znaki to:
http://www.fileformat.info/info/unicode/char/201e/index.htm
http://www.fileformat.info/info/unicode/char/201d/index.htm

Chcialbym je zamienic na:
http://www.fileformat.info/info/unicode/char/0022/index.htm

Niestety, nie udaje mi sie sad.gif

Probowalem tak dla pierwszego znaku:
Kod
$zamienniki = Array('\xE2\x80\x9E' => '\x22');
$input = strtr($input, $zamienniki);


albo tak:
Kod
$zamienniki = Array('\x201e' => '\x22');
$input = strtr($input, $zamienniki)

Wzorowalem sie na przykladzie ghasha i na tym:
http://php5.pl/php/konwersja_systemu_kodow..._win1250_i_utf8

Nie dziala. W jakiej postaci mam podac kody znakow, aby zadzialalo?


EDIT:
Juz wiem: trzeba bylo uzyc podwojnych cudzyslowow:
Kod
$zamienniki = Array("\xE2\x80\x9E" => "\x22");


Ten post edytował marcini82 25.01.2007, 12:24:12
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 08:26