2015-03-02 35 views
0

我的視圖代碼:CakePHP的2.6確認消息,西班牙字符失敗,因爲json_encode

$confirm='¿Está seguro de que quiere borrar el nº 1?'; 
$this->Html->link(__d('phkapa', 'Send'), array('action' => 'send', $ticket['Ticket']['id']),array('escape' => true, 'confirm'=> $confirm)); 

結果提示框是:
\ u00bfEst \ u00e1塞古羅德闕quiere borrar埃爾ñ\ u00ba 1?

CakePHP的2.6和所有的應用程序是UTF8 ...

這是蛋糕上2.6的錯誤還是我失去了一些東西?或任何想法如何解決這個問題,而不改變核心函數,返回一個字符串作爲onclick處理程序用於確認對話框。 這個函數使用json_encode像$消息= json_encode($消息),這是問題,json_enconde輸出\ u00bf代替¿

unfortunaly我們不能使用選項JSON_UNESCAPED_UNICODE,字面編碼多字節Unicode字符(默認爲逃避作爲\ uXXXX),因爲僅在PHP 5.4.0以後纔可用。

+0

瀏覽器應該能夠處理忽略Unicode序列就好了,並正確顯示字符(匯率,Chrome瀏覽器,IE,歌劇,Android瀏覽器等,他們都爲我做的罰款)。您使用的是哪個瀏覽器/版本,生成的源代碼是什麼樣的? – ndm 2015-03-02 17:01:59

+0

Enviar 2015-03-02 17:05:47

+0

Chrome版本40.0.2214.115(64位)Firefox 36都在ubuntu 14上, 2015-03-02 17:16:45

回答

0

嘗試使用PHP首先通過urlencode對值進行編碼。希望CakePHP在生成HTML輸出時解碼這些值。

$confirm = urlencode ('¿Está seguro de que quiere borrar el nº 1?'); 
$this->Html->link(__d('phkapa', 'Send'), array('action' => 'send', $ticket['Ticket']['id']),array('escape' => true, 'confirm'=> $confirm)); 

您還可以看到這個演示編碼/解碼的JS小提琴https://jsfiddle.net/daeyebpu/

Saludos desde科羅拉多