function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
kstukudakstukuda 

JavaScriptでコントローラからの値を呼び出した際の文字化け

お世話になります。 

 

現在、Visualforceページ内のJavaScriptでXMLの文字列を作るという処理を作成しています。 

 

処理の流としては

 ・コントローラでSQOLを実行

 ・その結果をXMLに追加する

です。 

 

そこで、Visualforceページ内のJavaScriptの文字列でVisualforceの式(”{!hoge~}”)に

日本語が入ると文字化けしてしまいます。

 

 

 

 Visualforceページ(抜粋)

 

<script>var xmlData = '<xmlData>';

<apex:repeat value="{!dbData}" var="db">

xmlData = xmlData + '<set name="{!db.field1__c}" ';

xmlData = xmlData + 'value="{!db.field2__c}" ';

xmlData = xmlData + '/>';

</apex:repeat>

xmlData = xmlData + '</xmlData>';

</script>

 

 コントローラ

public class ExClass{

public List<Employee_Environment__c> dbData{get;set;};

public void getEx(){

 dbData=[SELECT field1__c, field2__c, From Exmp__c ];

}

}

 

 

 上記の{!db.field1__c}の部分に日本語の文字列が入ると文字化けしてしまいます。

 (例:”&#12343;&#12326;&#123243;&#12543;・・・”)

 

 

どなたか解決策をご存知でしたら、ご教授お願いいたします。

 

 

Best Answer chosen by Admin (Salesforce Developers) 
kstukudakstukuda

返信ありがとうございます。

なろほど、HTML 数値文字参照でしたか。

 

以下の関数を作成することで解決できました。

ありがとうございます。

 

 

function Conv(text){

  while(text.match(/&#([0-9]+?);/) ){

    text = text.replace(/&#([0-9]+?);/, String.fromCharCode(RegExp.$1));

}

return text;

}

 

 

 

2010-03-23 09:49 AM
にkstukudaにより編集されたメッセージ
2010-03-23 09:50 AM
にkstukudaにより編集されたメッセージ

All Answers

HikeyHikey

> (例:”&#12343;&#12326;&#123243;&#12543;・・・”)

例に挙げて頂いた文字は文字化けではなく、HTMLの数値文字参照です。

詳細は以下のURLをご参照ください。

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E5%8F%82%E7%85%A7

特に問題がないように思われますがいかがでしょうか??:smileysurprised:

HikeyHikey

<script> タグで囲んだ中ではHTML 数値文字参照がされません。

 

<script> タグの外はHTML 数値文字参照になります。

 

<apex:page showHeader="false" sidebar="false"> サンプル <script> サンプルHTML 数値文字参照 されない。 </script> </apex:page>

 

kstukudakstukuda

返信ありがとうございます。

なろほど、HTML 数値文字参照でしたか。

 

以下の関数を作成することで解決できました。

ありがとうございます。

 

 

function Conv(text){

  while(text.match(/&#([0-9]+?);/) ){

    text = text.replace(/&#([0-9]+?);/, String.fromCharCode(RegExp.$1));

}

return text;

}

 

 

 

2010-03-23 09:49 AM
にkstukudaにより編集されたメッセージ
2010-03-23 09:50 AM
にkstukudaにより編集されたメッセージ
This was selected as the best answer