我无法弄清楚我的生活。MySQL欧洲人物
我有一个查询,在页面上拉取元素的翻译。因此,该页面上可以显示任意数量的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触及该字符串是转弯时该字符串为null。
你有没有在页面上设置正确的字符集(以标记和php标题)并查询“SET NA” MES UTF8“在选择数据之前? – 32bitfloat 2012-07-13 22:26:01
你有一个非常复杂的查询。原谅我问明显:数据是否正确?获取NULL值不是一种典型的字符编码问题。 – Joni 2012-07-14 19:01:54
@JoniSalonen是的,我的SQL客户端会提取正确的信息,但通过代码发送时,它会返回空字符串。 – Peter 2012-07-16 04:27:28