我正在構建使用WIN1257(不是UTF8)編碼的Firebird 2.1數據庫的Yii2 REST應用程序。我能得到JSON的結果,如果數據不containt非拉丁字母,但是當VARCHAR字段包含非拉丁語言specifice字符,那麼我得到的錯誤消息:REST Yii2 - 如何在json中顯示來自數據庫的非UTF8字符?
malformed UTF-8 characters, possibly incorrectly encoded., "yii\base\InvalidParamException"
完整的堆棧跟蹤是:
{
"name": "Exception",
"message": "Malformed UTF-8 characters, possibly incorrectly encoded.",
"code": 5,
"type": "yii\\base\\InvalidParamException",
"file": "C:\\xampp\\htdocs\\myproject\\vendor\\yiisoft\\yii2\\helpers\\BaseJson.php",
"line": 123,
"stack-trace": [
"#0 C:\\xampp\\htdocs\\myproject\\vendor\\yiisoft\\yii2\\helpers\\BaseJson.php(61): yii\\helpers\\BaseJson::handleJsonError(5)",
"#1 C:\\xampp\\htdocs\\myproject\\vendor\\yiisoft\\yii2\\web\\JsonResponseFormatter.php(89): yii\\helpers\\BaseJson::encode(Array, 320)",
"#2 C:\\xampp\\htdocs\\myproject\\vendor\\yiisoft\\yii2\\web\\JsonResponseFormatter.php(73): yii\\web\\JsonResponseFormatter->formatJson(Object(yii\\web\\Response))",
"#3 C:\\xampp\\htdocs\\myproject\\vendor\\yiisoft\\yii2\\web\\Response.php(948): yii\\web\\JsonResponseFormatter->format(Object(yii\\web\\Response))",
"#4 C:\\xampp\\htdocs\\myproject\\vendor\\yiisoft\\yii2\\web\\Response.php(312): yii\\web\\Response->prepare()",
"#5 C:\\xampp\\htdocs\\myproject\\vendor\\yiisoft\\yii2\\base\\Application.php(381): yii\\web\\Response->send()",
"#6 C:\\xampp\\htdocs\\myproject\\web\\index.php(12): yii\\base\\Application->run()",
"#7 {main}"
]
}
在將它們呈現給json格式化程序之前,是否可以派生出一些可以將這些字符轉換爲UTF8字符的類?數據庫遷移到UTF8目前是遙不可及的,Web應用程序應該適應這種情況下的需求。
如果您的數據庫爲所有(相關)列設置了明確的字符集,則可以使用連接字符集進行轉換。 –