2012-08-17 60 views
4

我有一個將頁面轉換爲JSON格式的InDesign腳本。惡魔般的捲曲引號

然而,這是智能的「捲曲」雙引號,而不是正常的(「」)。當然這會產生無效的JSON文件。

試圖解決這個問題,因爲我需要對這些文件進行一些其他PHP操作,所以我嘗試瞭解這個問題,並在文件上傳中解決它。

原來,該功能僅適用於InDesign在Windows PC中生成的報價(並非全部)。如果你在MAC上運行該腳本並上傳文件,它將不起作用,因爲編碼看起來不同。我試過其他的解決方案,但是,他們根本不會產生任何結果。

這是腳本。

function quoteReplacer($file) 
    { 



     $string = file_get_contents($file); 

     $string = to_utf8($string); 
     $bits = array('\xe2\x80\x9c', '\xe2\x80\x9d', '\xe2\x80\x98', '\xe2\x80\x99','â','â'); 
     $string = str_replace($bits,'"',$string); 

     file_put_contents($file,$string); 




     //file_put_contents($file,$string); 

    } 

    function to_utf8($string) { 
      return iconv('CP1250', 'UTF-8', $string); 
    } 
+0

您的意思是使用InDesign腳本?我真的試圖用直引號導出所有內容,但它不起作用... 使用此PHP腳本,如果在MAC上生成JSON文件,編碼似乎不同,並且腳本不起作用它會給出一個錯誤(在這裏沒有獲得MAC文件,將盡快編輯這個案例給出的錯誤)。 – 2012-08-17 14:30:06

回答

8

這個腳本應該工作:

// First, replace UTF-8 characters. 
$text = str_replace(
array("\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\xa6"), 
array("'", "'", '"', '"', '-', '--', '...'), 
$text); 
// Next, replace their Windows-1252 equivalents. 
$text = str_replace(
array(chr(145), chr(146), chr(147), chr(148), chr(150), chr(151), chr(133)), 
array("'", "'", '"', '"', '-', '--', '...'), 
$text); 

全部更換爲奇怪的字符可能會堵塞你的JSON。 提供:link

或者你可以讓他們按命令關閉它在所有工作站 + + 選項 + 旁邊輸入爲Mac引號鍵,PC上的等價物是可能CTRL + alt + shift + '或者你可以在preferences找到它。

+1

感謝您的回覆。它似乎在Windows上工作,所以+1。我會等待能夠用Mac進行測試,然後如果它能正常工作,我會接受它;) – 2012-08-17 14:37:39