2012-05-25 14 views
2

我正在致力於在網站上顯示下載的擴展。您可以通過on GitHub查看完整的當前數據源。爲什麼我的擴展程序不能渲染變音符號?

鑑於這段代碼在我controller

$linkName = Tx_Downloads_Utility_Filename::construct($download); 
    $download->setLinkText($linkName); 

這就是我想要設置的標籤下載。不幸的是,當它後來被渲染時,如果$linkName包含變音符號(變音符只是我的測試主題,實際範圍未知),結果將是空白的。

出於調試目的,我已經延長該部分看起來像這樣:

$linkName = Tx_Downloads_Utility_Filename::construct($download); 
    $download->setLinkText($linkName); 
    $this->flashMessages->add("'" . strlen($linkName) . "'"); 
    $this->flashMessages->add(urlencode($linkName)); 
    $this->flashMessages->add($linkName); 

所得的輸出存在: enter image description here 請注意,沒有第三提示信息的呈現方式。


但它不像不會變成不會變音。例如,這是我與調試記錄:

enter image description here

LINK域(圖像圖標和31.06KB之間)是空白的,但應該說Text_File_Sömething.jpg。字符串Sömething在模板的另一個位置呈現完美。

問題與我的Fluid template

+0

那很奇怪。你可以嘗試調試嗎? – pgampe

+0

@pgampe:可惜的是,沒有真正的調試器(我沒有工作設置)。和調試() - 調試是相當困難的,如果你不知道從哪裏開始:( –

回答

3

對不起,這不是很清楚。接下來嘗試: 您可以撥打Tx_Downloads_Utility_Filename::construct($linkName)哪些(默認情況下)調用Tx_Downloads_Utility_Filename::clean($linkName),它會再次通過用下劃線替換與正則表達式模式/([[:alnum:]_\.-]*)/不匹配的任何內容來刪除所有特殊字符。 似乎與編碼的問題(也許您的數據庫未設置爲UTF-8編碼),所以Text_File_Sömething實際上變成Text_File_Sömething和清潔()方法是轉成一個無效的字符串。先嚐試在$filename上使用utf8_encode()

+0

太棒了!我正在尋找完全錯誤的地方。我用[這個建議](http://stackoverflow.com/questions/158241/) php-replace-umlauts -with-closest-7-bit-ascii-equivalent-in-an-utf-8-string)現在將文件名轉換成:)謝謝 –