我这辈子都想不通。
我有一个查询可以提取页面上元素的翻译。因此,该页面上可以出现任意数量的 15 种语言。当我开始添加像瑞典语这样的语言时,任何具有符号的语言都会ö
导致整个字段返回空字符串。
我已经验证了表上的编码,它声称它正在使用UTF-8
,但看到这不起作用我很困惑。
这是我正在使用的查询:
SELECT
form.form_id,
elem.elem_type,
elem.elem_name,
elem.elem_format,
elem.elem_required,
trans.trans_label,`
trans.trans_description,
trans.trans_defaultValue,
trans.trans_other,
elem.elem_advancedcommand
FROM
events_form form
LEFT JOIN
events_form_elements elem
ON
form.event_id = elem.event_id
INNER JOIN
events_form_translations trans
ON
elem.elem_id = trans.elem_id
INNER JOIN
events_form_languages lang
ON
trans.lang_id = lang.lang_id
WHERE
form.form_id = '{$formid}' AND lang.language = '{$language}'
ORDER BY
elem.elem_sortorder
现在我尝试做类似的事情:
CONVERT(CAST(trans.trans_description as BINARY) USING latin1) as trans_description,
强制它隐藏编码,但这根本不会产生结果。
在我得到结果后,它立即被 json_encoded 并返回给用户(Ajax 请求)。我不认为这是 json_encode 做一个print_r
输出数组会产生同样的问题。
另外.. 最后,我正在构建的系统正在使用 xPDO,所以我也不太确定这是否是问题所在。
编辑:似乎 PHP 正在返回一个正确的值或至少一个值,例如这里是一个print_r
转储:
[trans_label] => Ditt f�rnamn?
[trans_description] =>
[trans_defaultValue] => First Name
因此,似乎当我的 json_encode 触及该字符串时,它会将字符串变为空。