私は私の人生のためにこれを理解することはできません。
ページ上の要素の翻訳を取得するクエリがあります。そのため、そのページには 15 の言語をいくつでも表示できます。スウェーデン語などの言語を追加し始めると、ö
フィールド全体で null 文字列が返されます。
テーブルのエンコーディングを確認しましたが、使用していると主張してい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 Request)。print_r
出力配列を実行すると同じ問題が発生するため、json_encodeだとは思いません。
また..最後に、私が構築しているシステムはxPDOを使用しているため、それが問題かどうかはわかりません。
編集: PHP が正しい値を返すか、少なくとも値を返すようです。たとえば、ここではprint_r
ダンプです:
[trans_label] => Ditt f�rnamn?
[trans_description] =>
[trans_defaultValue] => First Name
したがって、私のjson_encodeがその文字列に触れるのは、文字列がnullになるときのようです。