2012-06-10 50 views
2

我正在使用Shopify PHP API。沒有變音符號的產品工作正常,並被添加。當我試圖發送帶有捷克變音符號(ěščřžýáíé)產品,顯示錯誤:Shopify PHP API:支持變音符號

Fatal error: Uncaught exception 'ShopifyApiException' with message 
'Unprocessable Entity' in C:\webdev\www\shopify-api-doporucene\shopify.php on line 32 

ShopifyApiException: Unprocessable Entity in C:\webdev\www\shopify-api-doporucene\shopify.php on line 32 

我在本地主機上使用WAMP。我試過json_encode,但它不起作用。有誰知道我該如何解決這個問題?

我的PHP代碼(API密鑰從這個例子中刪除):

require 'shopify.php'; 

    $shops_myshopify_domain = "hyatt-ryan2200.myshopify.com"; 

    $api_key = ""; 

    $shared_secret = ""; 

    $shops_token = ""; 

    // For regular apps: 
    $shopify = shopify_api_client($shops_myshopify_domain, $shops_token, $api_key, $shared_secret); 

    $newproduct = array 
    ( 
     "product"=>array 
     ( 
      "title"=>"Product title (works fine without diacritics)", 
      "body_html"=>"Super Duper Plan", 
      "vendor"=>"Vendor", 
      "product_type"=>"Test" 
     ) 
    ); 

// All requests accept an optional fourth parameter, that is populated with the response headers. 
$senditem = $shopify('POST', '/admin/products.json', $newproduct, $response_headers); 
+0

您是否嘗試修改'title'以在PHP中包含重音字符?我假設您的問題是產品名稱來自AJAX操作 - 這可能會破壞您的UTF-8數據。另外檢查一下,如果你的PHP文件中包含UTF8字符串,那麼它將以UTF-8編碼 - 請檢查你的編輯器。 – halfer

+0

產品在PHP文件中(參見上面的$ newproduct)。 Ediotor設置爲UTF-8。當我用記事本打開它並將它保存到UTF8時,有一些廢話通過API發送到eShop:「Testovacu00ed zbou017eu00ed」(originalTestovacízboží「)。 – RadimH

+0

啊,它使用JSON進行服務器到服務器的通信。 'print_r($ newproduct)'並將其輸出到瀏覽器(希望你也有一個UTF-8渲染!)以查看它是否看起來不錯。在這個變量上使用'json_encode'實際上有什麼區別? – halfer

回答

0

的前提:我從@Sarke的意見開始,所以這個問題將有答案。

您可以嘗試

$newproduct = array 
    ( 
     "product"=>array 
     ( 
      "title"=>"Product title (with ot without diacritics)", 
      "body_html"=>"Super Duper Plan", 
      "vendor"=>"Vendor", 
      "product_type"=>"Test" 
     ) 
    ); 

foreach($newproduct["product"] as $k => $v){ 
    $newproduct["product"][$k] = iconv("UTF-8", "ISO-8859-2", $v); 
} 

創建與ISO-8859-2編碼值,相干shopify服務器$新品展示陣列。

0

當你使用WAMP,嘗試加入或改變php.ini文件是這樣的:使用要解決檢查終端到終端的

; PHP's default character set is set to empty. 
; http://php.net/default-charset 
default_charset = "utf-8" 

字符集問題,如果每一件事情使用相同的(UTF -8是shopify的情況)。重要:更改後重新加載WAMP。