[ mistere @ 20.08.2008. 15:18 ] @
Pozdrav,

Imam problem sa prikazom znakova čćžđš, a stari topici o toj temi nisu mi pomogli.
Stvar stoji ovako:

U mysql bazi imam tablicu sa grupama proizvoda ( tablica je UTF-8 ).
Pomoću ColdFusion dokumenta spajam se na bazu i dinamički kreiram XML file.

Code:

<?xml version="1.0"  encoding="utf-8"?> 

<cfcontent type="text/xml">
<cfquery datasource="mojsource" name="podgrupe">

    SELECT * FROM tbl_grupe WHERE parent_id=#URL.id# 

</cfquery>



<options>


  <cfloop from="1" to="#podgrupe.recordcount#" index="a">
    <cfoutput>
             <option>#podgrupe.naziv[a]#</option>
              <value>#podgrupe.id[a]#</value> 
        </cfoutput>

   </cfloop>


</options>




Dakle, jednostavan query koji mi dinamički kreira XML .
Taj file kasnije pomoću XMLHttpRequest pozivam u drugi ColdFusion dokument (UTF-8 ) i pomoću tog xml outputa punim options nekog drop down menija.

Iako i XML i coldfusion file u koji se ubacuje imaju utf-8 znakovi čćžđš se ne prikazuju.

Umjesto coldfusiona mogao je to biti PHP, ASP ili nešto treće ali rezultat bi, vjerujem bio isti.

Ima li tko kakvu ideju?

Hvala!



[Ovu poruku je menjao mistere dana 20.08.2008. u 16:57 GMT+1]
[ mistere @ 20.08.2008. 15:56 ] @
Eliminacijom dijela koda došao sam do zaključka da je ipak problem u Coldfusionu i to konkretno u dijelu:

<cfcontent type="text/xml">

ako ga postavim ne prikazuju se znakovi čćžđš
ako ga maknem dokument nije prepoznat kao XML ( xmlhttp.responseXML )

postavljanje <cfcontent type="text/xml;utf-8"> nije pomoglo...

dakle, ovo postaje više pitanje ColdFusiona nego XML-a

[ mistere @ 21.08.2008. 11:34 ] @
Za slučaj da nekome zatreba, nisam našao rješenje tog problema ali sam smislio zaobilazni način kako ga riješiti (pribit čavlima pa dokle stoji):




Code:

<cfxml variable="grupe">
<?xml version="1.0"  encoding="utf-8"?>

<cffunction name="zamjena_karaktera" access="public" output="no" returntype="string">
    <cfargument name="slovo" required="YES" type="string">
   
    <!--- ispravljanje grešaka u xml-u sa hrvatskim znakovima ... radimo svoj šifrarnik koji ćemo kasnije opet vratit na kontra stranu--->
   <cfscript>
    var str = arguments.slovo;
    
str = replace(str,'š','s777F');
    str = replace(str,'Š','S777F');
    str = replace(str,'ž','z777F');
    str = replace(str,'Ž','Z777F');
    str = replace(str,'đ','d777F');
    str = replace(str,'Đ','D777F');
    str = replace(str,'ć','c777F');
    str = replace(str,'Ć','C777F');
    str = replace(str,'Č','C777F');
    
    return str;
    
    </cfscript>
    

</cffunction> 


<cfquery datasource="mojSource" name="podgrupe">

    SELECT * FROM tbl_grupe WHERE parent_id=#URL.id# 

</cfquery>



<options>


<cfloop from="1" to="#podgrupe.recordcount#" index="a">
    <cfoutput>
    <cfset MYstring = podgrupe.naziv[a]>
  
    
    
    <option>#zamjena_karaktera(MYstring)#</option>
    <value>#podgrupe.id[a]#</value>
    
</cfoutput>



</cfloop>

</options>

</cfxml>


<cfset xmlString = ToString(grupe)>


<cfcontent type="text/xml;utf-8" reset="yes"><cfoutput>#xmlString#</cfoutput>



Dakle, budući da problem nastaje nakon primjene <cfcontent type="text/xml">, a da se prije toga znakovi čćžđš pojavljuju normalno, pomoću funkcije "zamjena_karaktera" mijenjam svaki znak(č,ć,ž,đ ili š) za neku pripadajuću šifru...


tako se <cfcontent type="text/xml"> izvršava ispravo , a kasnije u javaScriptu samo vratim stvari nazad se vrlo sličnom funkcijom koja vraća šifru nazad u znakove(č,ć,ž,đ ili š)...