Autor Zpráva
prochar1
Profil *
Zdravím,

odeslílám data formuláře pomocí $.get na php script.
Jak mám vyřešit aby ve výsledných proměnných byla správně čeština.
Celý projekt mám ve windows-1250.

Díky :)
charlie22
Profil *
Musíš mít v tom PHP header s charsetem:
header('Content-Type: text/html; charset=windows-1250'); 
prochar1
Profil *
to samozřejmě mám...
problém je už v tom jquery a ajaxu, že to pošle takhle blbě

tohle žčážřžářžá má být ěščřžýáíé
Joker
Profil
Nějaký soubor má asi špatně kódování. Zdá se, že někde není windows-1250, ale utf-8.
srigi
Profil
prochar1
Kedysi som s tym bojoval, ked som v cistom JS posielal retazce s diakritikou na server. Riesenim bolo nastavenie headra v JS:
XmlHttpObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

Skus pohladat podobnu funkciu (option) v Jquery.ajax()
charlie22
Profil *
no a ta stránka, kde je pracuje jQuery script má taky kódování 1250??
prochar1
Profil *
[#4]
to je dost zvláštní, všchny soubory tvořím stejně v PSPadu


[#5]
to jsem myslím zkoušel, ale nešlo to, ani jsem v jquery nic podobnýho nenašel, ještě se podívám

[#6]
podívám se, ale nevidí důvod, proč by neměla
charlie22
Profil *
a co tohle?
<script charset="windows-1250" type="text/javascript">
charlie22
Profil *
ale osobne bych přešel na UTF-8, 1250 už je jaksi historie.. :-)
prochar1
Profil *
charlie22:

když to tam mám pomocí header, tak to tam nemusím dávat takhle.

problém je někde v javascriptu
prochar1
Profil *
jenže předělat celej projekt a všecvhny ostatní , který otvírám v pspadu do UTF-8 je docela fuška
charlie22
Profil *
tak posli nejaky kod, kde ti to dela, pokud mas header v poradku, tak neni duvod, proc by to melo delat, pro jistotu zkus JS rict tu znakovou sadu a uvidime, pak by byl problem nekde jinde.
prochar1
Profil *
snažím se prostě vytvořit diskuzi bez refreshe stránky

formulář:

<style>
.im_vzkazy {
  border: 1px solid silver;
  overflow: auto;
  height: 200px;
  padding: 10px;
}
</style>
<script type="text/javascript" charset="windows-1250">
$(document).ready(function(){
  $(".im_vzkazy").text("Načítá se...");
  var val_nick=$(".nick").attr("value");
  $(".im_vzkazy").load("vzkazy/im_vzkazy.php?nick="+val_nick);
  $(".obnovit").click(function(){
    var val_nick=$(".nick").attr("value");
    $(".im_vzkazy").text("Načítá se...");
    $(".im_vzkazy").load("vzkazy/im_vzkazy.php?nick="+val_nick);
  });
  $(".odeslat").click(function(){
    var val_id_komu=$(".id_komu").attr("value");
    var val_id_od=$(".id_od").attr("value");
    var val_sms_mail=$(".sms_mail").attr("value");
    var val_text=$(".text").attr("value");
    var val_nick=$(".nick").attr("value");
    $(".text").val("");
    $(".im_vzkazy").text("Načítá se...");
    var odeslano=$.get("vzkazy/scripts/save_vzkaz.php", { 
      id_komu: val_id_komu, 
      id_od: val_id_od, 
      id_user: val_id_od, 
      sms_mail: val_sms_mail, 
      text: val_text 
    })
    if(odeslano){
      $(".im_vzkazy").load("vzkazy/im_vzkazy.php?nick="+val_nick);
    }
  });
});
</script>
<div class="panel" id="im" style="width: 420px;">
<h3>Vzkazy</h3>
  <div class="panel1">
    <div class="im_formular">

        <input type="hidden" value="<?echo $nick['id'];?>" name="id_komu" class="id_komu" />
        <input type="hidden" value="<?echo $nick['nick'];?>" name="nick" class="nick" />
        <input type="hidden" value="<?echo $user['id'];?>" name="id_od" class="id_od" />
        <input type="hidden" value="<?echo $nick['sms_mail'];?>" name="sms_mail" class="sms_mail" />
        <textarea name="text" class="text" style="width: 404px; height: 60px;"><?echo $text;?></textarea>
        <a class="obnovit" style="float: right; margin-top: 14px;">obnovit vzkazy</a>
        <input type="submit" value="odeslat" class="odeslat" style="margin-top: 3px; margin-bottom: 10px;" />
        <br />

    </div>
    
    <div class="im_vzkazy">
    </div>
  </div>
</div>


to se vkláda phpčkem do index stránky, která všechny náležitosti kolem kódování atd. má nastavený

a odeslílám na script save_vzkaz.php

<?php
include "../../scripts/header.php";   //header.php obsahuje header('Content-type: text/html; charset=windows-1250'); cesta je správná

a pak tam mám ukládání Get dat do databáze a tam už se ukládaj ptákoviny, co se týče češtiny
?>
Chamurappi
Profil
Reaguji na prochar1:
Jedna živá ukázka je lepší než tisíce slov.


Reaguji na charlieho22:
osobne bych přešel na UTF-8, 1250 už je jaksi historie.. :-)
Historická je spíš epocha, kdy na kódování záleželo.

a co tohle?
Atribut „charset“ se užívá k určení kódování externího JS, je-li jeho kódování jiné než kódování dokumentu. Nemá vůbec žádný vliv na XMLHttpRequest.
prochar1
Profil *
a jak tedy XMLHttpRequest v Jquery ovlivním? nic podobnýho jsem dokumentaci nenašel
charlie22
Profil *
tak jsem s tim laboroval chvilku a mas 2 moznosti, bud si prepni hlavicku, kde mas jQuery na utf-8 nebo do PHP dej napriklad tohle:
echo iconv('windows-1250','utf-8',$_GET['id_komu'])."<br>";
charlie22
Profil *
otazkou je, v jakym kodovani to zapisujes do DB jeste.
prochar1
Profil *
ok, díky :)

iconv('utf-8','windows-1250',$_GET['text']);

pomohlo :)
charlie22
Profil *
jinka ten AJAX request loader mas spatne a urcite to nebude fungovat, jak ocekavas, pouziva se pro to něco takové:
$.ajaxStart(function(){
$('.neco').html('Nahrávám data...')
});
Chamurappi
Profil
Reaguji na prochar1:
Metoda GET se hodí jen na krátké texty, protože URL s několika tisíci znaky není spolehlivá. Použij raději POST.
Anna007
Profil
charlie22 - díky moc, to mi vyřešilo problém, s kterým jsem nemohla hnout !!!
Chamurappi
Profil
Reaguji na Annu007:
to mi vyřešilo problém
Co konkrétně? Přecházet na UTF-8 kvůli AJAXu nutné není.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0