Autor | Zpráva | ||
---|---|---|---|
Rieltor Profil * |
Na své stránky jsem umístil kontaktní formulář.
Odeslání dat na můj mail zajišťuje stránka v PHP. Tento kód funguje v češtině bez problémů: $Zprava = StrTr($Zprava, "\x8A\x8D\x8E\x9A\x9D\x9E", "\xA9\xAB\xAE\xB9\xBB\xBE"); $Zprava = base64_encode($Zprava); $Hlavicka = "MIME-Version: 1.0 \n". "Content-Type: text/plain; charset=\"iso-8859-2\" \n". "Content-Transfer-Encoding: base64 \n"; Jenže, když někdo do formuláře napíše text v ruštině, přijdou mi na mail nečitelné nesmysly. Jak mám udělat, aby to fungovalo v češtině a ruštině zároveň? Děkuji předem za odpověď. Raději polopatě. Jsem začátečník. |
||
lionel messi Profil |
#2 · Zasláno: 26. 3. 2016, 18:56:54
Rieltor:
„Jak mám udělat, aby to fungovalo v češtině a ruštině zároveň?“ Použil by som kódovanie UTF-8, ktoré je na rozdiel od ISO 8859-2 použiteľné pre všetky znakové sady (čiže napr. latinku obohatenú o českú diakritiku a azbuku) súčasne. Možno robí neplechu aj prekódovanie do base64 a následné dekódovanie, ale k tomu sa už fundovane vyjadriť nedokážem. |
||
Rieltor Profil * |
#3 · Zasláno: 26. 3. 2016, 20:19:32
Už jsem to zkusil:
"Content-Type: text/plain; charset=\"utf-8\" \n". Nicméně to nepomohlo. A v češtině navíc chyběly české znaky. Dokonce jsem zkusil mail přesměrovat na jinou moji mailovou adresu. Výsledek je stejný. |
||
Keeehi Profil |
#4 · Zasláno: 26. 3. 2016, 20:57:45
Rieltor:
To že pošleš jen jinou hlavičku nestačí. I samotný obsah zprávy musí být v tom kódování. |
||
Rieltor Profil * |
#5 · Zasláno: 26. 3. 2016, 22:29:15
Asi to dělám špatně, protože toto nefunguje:
$Zprava = StrTr($Zprava, "\x8A\x8D\x8E\x9A\x9D\x9E", "\xA9\xAB\xAE\xB9\xBB\xBE"); $Zprava = base64_encode($Zprava); $Zprava = utf8_encode($Zprava); Prosím polopatě. Děkuji. |
||
Keeehi Profil |
#6 · Zasláno: 26. 3. 2016, 23:07:28
Rieltor:
Zaprvé změna kódování můsí být určitě před prřevedením na base64. Zadruhé utf8_encode kóduje z ISO-8859-1. Jsi si jistý, že máš toto kódování? Pokud ne, musíš použít jinou funkci. Třeba iconv. |
||
Rieltor Profil * |
#7 · Zasláno: 28. 3. 2016, 02:06:08
Taky jsem pak dospěl k funkci iconv():
$Zprava = iconv("CP1250", "UTF-8//TRANSLIT", $Zprava); $Zprava = base64_encode($Zprava); $Hlavicka = "MIME-Version: 1.0 \n". "Content-Type: text/plain; charset=\"utf-8\" \n". "Content-Transfer-Encoding: base64 \n"; Čeština nyní funguje bez problémů. Ovšem ruština se zase převede na HTML entity. |
||
Rieltor Profil * |
#8 · Zasláno: 28. 3. 2016, 04:23:21
Tak už jsem na to přišel! Kupodivu to bylo jednoduché.
Chtělo to změnit kódování obou stránek (formulář i obslužný PHP skript) na kódování UTF-8. Pak se stala zbytečnou i funkce iconv(). |
||
Časová prodleva: 9 let
|
0