GET URL字符串错误编码

时间:2014-06-16 15:14:43

标签: string symfony character-encoding get

我试图将xml代码转换为字符串。这是一个例子:

 URL: .../importarxml?enviosXml=<?xml version="1.0" encoding="iso-8859-1"?>+<lista>+<envio>+<REFERENCIA>XXXXXX</REFERENCIA>+<CODIGO>XXXXX</CODIGO>+<CLIENTE>OCAÑA</CLIENTE>+<FCARGA>13/12/2013</FCARGA>+<LCARGA>XXX</LCARGA>+<DESTINATARIO>XXXXX</DESTINATARIO>+<FENTREGA>18/12/2013</FENTREGA>+<LENTREGA>PARIS</LENTREGA>+<MATRICULA>XXXXXX</MATRICULA>+<BULTOS>2</BULTOS>+<PESO>1302</PESO>+<OBSERVACIONES></OBSERVACIONES>+</envio>+</lista>

我的代码是在symfony的Controller中从URL获取参数:

class EnviosController extends Controller{

 public function importarxmlAction(){
    $request = $this->getRequest();
    $em = $this->getDoctrine()->getManager();
    $xml = $request->query->get('enviosXml'); // $xml get bad characters
    ld($xml); --> (Displays $xml string content. Show bad characters)
    //For example 'OCAÑA'-->'OCA�A'
    (ldd-->LadybugBundle)

    $utf8_1 = utf8_decode($xml);        
    $utf8_2 = iconv('UTF-8', 'ISO-8859-1', $utf8_1);
    $utf8_2 = mb_convert_encoding($utf8_2, 'ISO-8859-1','UTF-8');        
    ld($utf8_2);  // Display $utf8_2 content  
    ...
 }

}

我尝试了utf8_decode(),iconv()和mb_convert_encoding(),但没有帮助我。我不知道还能做什么,如果有人能帮助我,我会很感激。

感谢。

P.S:抱歉我的英文不好!

1 个答案:

答案 0 :(得分:0)

通过GET方法在URL中传递整个XML并不是一个好主意。你的网址甚至没有被转义为用作网址字符串......

您应该通过其ID /名称提供现有文件的引用,或者通过表单上传(方法POST)

然后检查文件的编码。