Autor | Zpráva | ||
---|---|---|---|
radimh Profil |
#1 · Zasláno: 31. 1. 2006, 00:14:15
Zdravím všechny,
pomocí JavaScriptu odesílám data PHP skriptu (AJAX) metodou POST. V JavaScriptu je mj. uvedeno: httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); Zřejmě tato řádka mi zakóduje URL do nečitelných paznaků. Když zadám háčky a čárky, nefunguje to. Do databáze se ukládají data zjevně "url zakódovaná". I když si je pomocí funkce PHPka dekóduji, do databáze se stále ukládají špatně. Co s tím? Předem děkuji za pomoc. |
||
Mistr Profil |
#2 · Zasláno: 31. 1. 2006, 02:56:18
Problémy s češtinou se většinou řešily jejím kódováním (http://www.jakpsatweb.cz/cestina.html). Ovšem bude-li to správné řešení i v tomto případě, to si netroufám tvrdit.
|
||
radimh Profil |
#3 · Zasláno: 31. 1. 2006, 08:10:37
To Mistr) Díky za odkaz. Experimentoval jsem a přitom jsem zjistil, že se data posílají v kódování UTF-8. Přitom ve stránce je nastaveno ISO 8859-2. V UTF se ukládají do databáze.
Potíž je v tom, že já potřebuji tato data ukládat v ISO 8859-2. |
||
radimh Profil |
#4 · Zasláno: 31. 1. 2006, 08:39:37
Možná to bude ještě někdo potřebovat, a tak vkládám své další zjištění.
Podle dokumentu W3C - 11.6 Serialization as application/x-www-form-urlencoded se data při použití této hlavičky opravdu ukládají pouze v UTF ("non-ASCII and reserved characters as amended by subsequent are escaped by replacing the character with one or more octets of the UTF-8 representation of the character"). Viz. http://www.w3.org/TR/xforms/slice11.html Nepodařilo se mi změnit kódování z UTF na ISO před tím než data vkládám do databáze. Zkusím to tedy opačně - získat data z DB v UTF a převést je na ISO. Pokud se to nepodaří, nezbyde mi nic jiného než celý projekt překódovat do UTF. |
||
radimh Profil |
#5 · Zasláno: 31. 1. 2006, 09:00:38
Po pečlivém otestování všech možností mám svůj vlastní závěr. Pokud u AJAXu použijete hlavičku application/x-www-form-urlencoded, odešlou se data v UTF. Pro správné zobrazení těchto dat z databáze je potřeba, aby bylo kódování stránky a vlastně celý projekt v UTF.
Pokud by někdo náhodou zjistil, jak toto nastavení změnit a vkládat data do databáze jako ISO, budu velice vděčný za každou vaší radu. |
||
splite Profil |
#6 · Zasláno: 1. 2. 2006, 22:29:37 · Upravil/a: splite
Zkuste nastavit porovnávání tabulky klidně na utf-8
a před výběrem z databáze
prakticky se data nebudou jako ISO vkládat, ale vybírat ;) (doufám že mysql označení pro ISO je tak jak jsem ho napsal, já používám pouze utf8 a ted se mi to nechce hledat...) |
||
Časová prodleva: 1 rok
|
|||
crash31 Profil * |
#7 · Zasláno: 12. 7. 2007, 11:47:37
tak tohle jsem nasel na foru a funguje to naprosto bezproblemu .
Co se tyce alternativnich kodovani (nejen cp1250), lze to vyresit snadno: u prijimanych dat staci nastavit HTTP hlavicku Content-type: text/html; charser=windows-1250 (nebo alternativni, pro XML data ci jina kodovani), u odesilanych dat obdobne, pred odeslanim staci nastavit HTTP hlavicku Content-Type na hodnotu napr. application/x-www-form-urlencoded; charset=windows-1250 Autor RADEK Z . |
||
bukaj Profil |
#8 · Zasláno: 12. 7. 2007, 12:20:48
crash31
pozdě, ale přece :) |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0