json_encode คืนค่า null แม้ว่าจะใช้โซลูชัน SET NAMES utf8

ฉันได้รับผลลัพธ์เป็นโมฆะหลังจากที่ฉันโทร ajax โดยที่ค่ามีเครื่องหมายบนสระ ฉันพยายามแก้ไขปัญหานี้ด้วย:

$this->pdo = new PDO('mysql:host=host;dbname=db','user','password',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

ลำดับชั้นการโทรคือการเรียก ajax ไปที่สคริปต์ php search.php ซึ่งเก็บวัตถุ dbconnection และนี่คือที่ที่การโทร sql เกิดขึ้น ฉันพยายามแก้ไขด้วย utf8_encode แล้ว แต่ก็ไม่มีผลใด ๆ ฐานข้อมูลอยู่ในชุดอักขระ: UTF-8 Unicode (utf8) เช่นกัน และเวอร์ชัน php คือ 5.4

ใน Apache ในพื้นที่ของฉัน ฉันไม่พบปัญหาใดๆ ปัญหาปรากฏบนหน้าเว็บจริงเท่านั้น

ฉันคิดถึงอะไร?


person Kingalione    schedule 09.03.2014    source แหล่งที่มา


คำตอบ (1)


เปลี่ยนเครื่องหมายบนสระเป็นเอนทิตี HTML โดยใช้ htmlentities() จากนั้น json_encode()

person Jens A. Koch    schedule 09.03.2014
comment
ไม่ได้ช่วยฉัน ฉันใช้ htmlentities($products); echo json_encode($ผลิตภัณฑ์); และ $products = htmlentities($products); แต่ทั้งสองไม่ได้ผล - person Kingalione; 10.03.2014
comment
ตกลง มันคือการเชื่อมต่อฐานข้อมูลหรือการเข้ารหัส ซึ่งไม่ใช่ UTF-8 ตรวจสอบสิ่งนี้: stackoverflow.com/a/11413251/1163786 - person Jens A. Koch; 10.03.2014