【发布时间】:2012-06-13 15:01:59
【问题描述】:
我正在使用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);
【问题讨论】:
-
您是否尝试过修改
title以在您的PHP 中包含重音字符?我从您的问题中推测产品名称来自 AJAX 操作 - 这可能会损坏您的 UTF-8 数据。还要检查你的 PHP 文件中是否包含 UTF8 字符串,它是用 UTF-8 编码的 - 检查你的编辑器。 -
产品在 PHP 文件中(见上文,$newproduct)。 Ediotor 是在 UTF-8 中设置的。当我用记事本打开它并将其保存为 UTF8 时,有废话通过 API 发送到 eShop:“Testovacu00ed zbou017eu00ed”(原始 Testovací zboží”)。
-
对,它使用 JSON 进行服务器到服务器的通信。好的,尝试
print_r($newproduct)并将其输出到浏览器(希望您也有 UTF-8 渲染!),看看它是否正常。在这个变量上使用json_encode实际上有什么不同? -
另外,该库似乎提供
curl_setopts_()- 我想知道您是否可以设置 UTF-8 编码选项? -
输出:数组([产品] => 数组([标题] => Testovací zboží zkouším znovu nastavit [body_html] => 正文标题 [供应商] => 供应商 [product_type] => 滑雪板)) //UTF渲染就OK了。 json_encode 包含在 shopify.php 中,我通过 requre 调用它。
标签: php json api diacritics shopify