2013-08-15 32 views
6

Tôi gặp vấn đề khó chịu với truy vấn cơ sở dữ liệu đến mssql. Nếu kết quả chứa các ký tự đặc biệt như tiếng Đức 'ä', tôi không thể sử dụng json_encode để nhận kết quả là json chính xác.json_encode tạo JSON_ERROR_UTF8 từ MSSQL-SELECT

json_last_error trở tương đương với JSON_ERROR_UTF8. Tôi đoán cơ sở dữ liệu không trả lại các giá trị như UTF-8 được mã hóa. Bộ sưu tập cơ sở dữ liệu là * Latin1_General_CI_AS * và các cột bị ảnh hưởng là varchars.

Cấu hình php mssql.charset không có hiệu lực.

Tôi đọc rằng người dùng mysql có thể sử dụng mysql_query('SET CHARACTER SET utf8'); để mã hóa giá trị trả về chính xác. Tôi có thể làm gì, để có được các giá trị chính xác cho mssql?

Gợi ý - Tôi không thể thay đổi bất kỳ thứ gì trong cơ sở dữ liệu.

+0

thử biểu tượng php() trước khi json_encode() – goat

+0

'utf8_encode' dữ liệu trước tiên. – subroutines

Trả lời

11

Trước khi mã hóa JSON, hãy sử dụng utf8_encode() quanh chuỗi.

+0

Nó seams là giải pháp tốt nhất. Chỉ cần lặp qua các kết quả và chuyển đổi. Cảm ơn gợi ý đó. – hofmeister

+0

nó hoạt động ...... –

Các vấn đề liên quan