By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,466 Members | 1,141 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,466 IT Pros & Developers. It's quick & easy.

XMLHTTP

P: n/a
Hello,
I am working on a site which utilizes PHP/JS and the new found XMLHTTP
frenzy to update dynamically.
WHile the whole mechanism works beautifull, i can't get to display
greek Characters correct (They show up as ?).
I tried following solutions to set the XML:lang or simple lang
parameter in the div to el, but that didn't help.. Greek text in the
surrounding page is showing up correct..
Here is the code i am using:
The JS File
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}

function loadFragmentInToElement(fragment_url, element_id) {
var element = document.getElementById(element_id);
element.innerHTML = 'Loading ...';
xmlhttp.open("GET", fragment_url);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
element.innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null);
}

The client PHP:
<?php
include ("../_mssqlconnect.php");
include ("get_login_data.php");
?>
<script>
function offerDetails(id)
{
loadFragmentInToElement('sc_ogdetails.php?ogid='+i d, 'ogDetails');
}
</script>

//......

?>
<span lang="el" id="ogDetails" align="left"></span>

The server PHP:
<?php
include ("../_mssqlconnect.php");

//.......

echo "<div lang=\"el\">
<table class='sp_table' width=300 align=center>
<tr>
<td align=center><b>{here the greek Text which doesnt come
out right}<b></td>
</tr>
</table></div>";

ANy hints?
thanks

Jul 23 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a


Nemlah wrote:

I am working on a site which utilizes PHP/JS and the new found XMLHTTP
frenzy to update dynamically.
WHile the whole mechanism works beautifull, i can't get to display
greek Characters correct (They show up as ?). element.innerHTML = xmlhttp.responseText;


responseText is unreliable when it comes to encodings other than UTF-8
or UTF-16. So if you want to use responseText then make sure your PHP
page sends UTF-8 encoded text. Or do not use responseText but exchange
XML and use responseXML, then if your PHP page sends XML with the proper
XML declaration the XML parser should recognize the encoding and
properly decode characters. But XML parsers are only required to support
the encodings UTF-8 and UTF-16 thus if you want to make sure your page
works with as many browsers as possible then you should use one of those
encodings for your XML sent.

--

Martin Honnen
http://JavaScript.FAQTs.com/
Jul 23 '05 #2

P: n/a
Hey thanks for the fast reply,
I read about the UTF-8 encoding of the strings sent via responseText,
and i hoped i could setRequestHeader to the correct charset.. Doesn't
seem to work though..(unknown exception error)
I am trying the XML approach you suggested. Actually i am writing
manually an XML string and echoing it. All i get so far though is a
[object] in IE and nothing in firefox.
Apparently the responseXML returns an Document object. How can i print
it? I am not really interested right now in XML magic, but if wrapping
the data in XML helps i am willing to do that..
Any further hints..?
Thanks

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Jul 23 '05 #3

P: n/a
Vasilis Dimos wrote:
Hey thanks for the fast reply,
I read about the UTF-8 encoding of the strings sent via responseText,
and i hoped i could setRequestHeader to the correct charset.. Doesn't
seem to work though..(unknown exception error)
I am trying the XML approach you suggested. Actually i am writing
manually an XML string and echoing it. All i get so far though is a
[object] in IE and nothing in firefox.
Apparently the responseXML returns an Document object. How can i print
it? I am not really interested right now in XML magic, but if wrapping
the data in XML helps i am willing to do that..
Any further hints..?
Thanks


I had a similar problem not long ago.
i past again some php code which should help you.

<?php
$xmlString = '<?xml version="1.0" encoding="UTF-8"?>' . "\r\n";
$xmlString .=
'<root><text xml:lang="de">Umlaute: , , </text></root>';
header('Content-Type: application/xml');
echo utf8_encode($xmlString);
?>

As you can see the xml string is build also manually, but is utf8
encoded before echoed.

In the Javascript again, you can access the responseXML object with the
normal W3C DOM Methods.

Have a look a this page for a good intro:
http://www.quirksmode.org/dom/intro.html
Jul 23 '05 #4

P: n/a


Vasilis Dimos wrote:

I read about the UTF-8 encoding of the strings sent via responseText,
and i hoped i could setRequestHeader to the correct charset.. Doesn't
seem to work though..(unknown exception error)


The PHP script needs to send UTF-8 encoded text so I am not sure what
you are trying to achieve with setRequestHeader on the client.


--

Martin Honnen
http://JavaScript.FAQTs.com/
Jul 23 '05 #5

P: n/a


Vasilis Dimos wrote:

I am trying the XML approach you suggested. Actually i am writing
manually an XML string and echoing it. All i get so far though is a
[object] in IE and nothing in firefox.


I do not speak Greek so I am relying on babelfish for this. It
translates English
Who is god?
to the following:
*οιος είναι Θεός;

Now assuming you are encoding your PHP pages as ISO-8859-7 which is an
8-bit encoding allowing you to use Latin letters and Greek letters you
could send your XML as ISO-8859-7 and then rely on the XML parser to
decode that. As said XML parsers do not need to understand that encoding
but my tests here with MSXML/IE 6, Mozilla and with Opera 8.00 beta show
they do understand that.
I have used the following PHP test page encoded as ISO-8859-7:

<?php
$text = '*οιος είναι Θεός;';
$xmlSource = '<?xml version="1.0" encoding="ISO-8859-7"?>' . "\r\n";
$xmlSource .= '<text xml:lang="gr">' . $text . '</text>';
header('Content-Type: application/xml');
echo $xmlSource;
?>

Then client-side script reads the XML sent as follows:

function getText (url, callback) {
var httpRequest;
if (typeof XMLHttpRequest != 'undefined') {
httpRequest = new XMLHttpRequest();
}
else if (typeof ActiveXObject != 'undefined') {
httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
}
if (httpRequest) {
httpRequest.open('GET', url, true);
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState == 4 && httpRequest.responseXML) {
var xmlDocument = httpRequest.responseXML;
if (xmlDocument.documentElement &&
xmlDocument.documentElement.firstChild) {
callback(xmlDocument.documentElement.firstChild.no deValue);
}
}
};
httpRequest.send(null);
}
}

function insertTextIntoBody (text) {
var p;
if (document.createElement && (p = document.createElement('p'))) {
p.appendChild(document.createTextNode(text));
document.body.appendChild(p);
}
}

getText('test2004123101.php', insertTextIntoBody);

and then the tested browsers show

*οιος είναι Θεός;

in the HTML page.
Or use the PHP extension iconv if you have that available
http://de3.php.net/manual/en/function.iconv.php
to convert your 8-bit PHP strings to UTF-8 as needed.

--

Martin Honnen
http://JavaScript.FAQTs.com/
Jul 23 '05 #6

P: n/a


Hey Guys,
Thanks a lot for the answers. This is actually a lot more than I could
hope for. I will try this first thing in 2005. Happy new Year to all of
you.

Thanks Vasilis

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Jul 23 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.