2012-01-13 4 views
2

Iは、xsd:anyTypeあることがwsdlファイルに返された値のdatatypeを設定:なぜwebserviceはアクセント付の手紙をサポートしていませんか?

<message name="getEtapeProspResponse"> 
    <part name="return" type="xsd:anyType"/> 
</message> 

webservice呼び出しはMySQLのテーブルから選択した列で構成されている文字列を返す関数PHP。データベースで

function getEtapeProsp($user,$motpasse) 
    { 
     $user_code = verifyUser($user, $motpasse) ; 
     $resultat=""; 
     if ($user_code != null) 
     { 
      $datejour = date("Y-m-d"); 
      $connec = mysql_connect("192.168.1.123:3306", "root", "mysqlroot"); 
      mysql_select_db("finance",$connec); 
      $query = mysql_query("SELECT * FROM etape_prospection INNER JOIN type_prospection ON etape_prospection.type_prosp_id = type_prospection.type_prosp_id WHERE prosp_id IN (SELECT prosp_id FROM transfert WHERE user_code ='".$user_code ."' AND date_transfert='".$datejour."') order by etape_prospection.prosp_id"); 
      while($ligne = mysql_fetch_array($query)) 
       { 
        $resultat .= $ligne['etape_prosp_id'].';'; 
        $resultat .= $ligne['type_prosp_lib'].';'; 
        $resultat .= convertDateFormatHH($ligne['etape_prosp_date']).';'; 
        $resultat .= $ligne['etape_prosp_comment'].';'; // this is the text column 
        $resultat .= $ligne['prosp_id'].';'; 
        $resultat .= "\r\n"; 
       } 
     } 
     else 
     { 
      $resultat = "Login ou mot de passe incorrect" ; 
     } 
     return $resultat; 
    } 

値「etape_prosp_commentは」é、強調手紙を持っていますし、いずれかの列はdatatypetextのを持っています。 問題は、私がJ2MEアプリケーションからWebサービスを呼び出すと、例外がスローされるということです。しかし、私がcolumnにアクセントの付いた文字を挿入しないと、Webサービスは正常です。

このアクセント記号の問題を解決するにはどうすればよいですか?

+0

私はPHPのエキスパートではありませんが、情報をエンコードできます。 Webサービスを扱うときは、常に特殊文字が問題になることがあります。 – Ernesto

+1

例外はスローされますか?サーバーから受け取ったXMLメッセージはどのように見えますか? – DRH

+1

「アクセント付きの文字」を意味します。 "太字"、 "イタリック"などの行に沿っていると思われます。httpパイプライン全体(クライアント→PHP→データベース→PHP→クライアント)で文字セットが一致していることを確認しましたか?そのチェーン内の任意の場所にある文字セットの変更は、データをマングリングします。 –

答えて

3

テキストは、B、C、D、EまたはEなどの文字(あなたの場合)などにシステムが文字がを設定し、一緒になってサポートしているすべての文字が含まれています。 A 文字エンコーディングは、文字がバイト表現にどのようにシリアライズされるかを定義します(値はどのように多くのバイトが等に格納されますか)。

これは、エンコーディングで問題が発生する場所です。あなたのキャラクターはバイトに変換され、次にあなたはキャラクターを取り戻さなければならないバイトから変換されます。 Webサービスとクライアントが同じ文字エンコーディングを使用しない場合、Webサービスはバイトをクライアントから文字に変換することはできません。エラーや不正な文字列が表示されます。

私はPHP開発者ではありませんが、次の記事には問題の解決に関するいくつかの関連情報が含まれています:Character Sets/Character Encoding Issues

この記事では、文字セットについてもう1つの良い点を指しています(2003年から少し古くなっていますが):The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)ですので、まずこれをお読みください。

主なエンコーディングは、UTF-8です。これは、主にUTF-16と一緒にWebサービスの相互運用性ガイドで必須のエンコーディングであるためです。 see rule R1012 of the Basic Profile

関連する問題