Tôi đang sử dụng CodeIgniter không quá lâu nhưng tôi đã một số vấn đề charset .. Tôi đang hỏi xung quanh tại CI diễn đàn, nhưng tôi muốn đi xa hơn, vẫn không có giải pháp toàn cầu: http://codeigniter.com/forums/viewthread/204409/CodeIgniter và bảng mã
Vấn đề là một lỗi cơ sở dữ liệu 1064. Tôi đã có một giải pháp, sử dụng iconv! Hoạt động tốt, nhưng tôi nghĩ rằng nó không cần thiết. Tôi đang tìm kiếm rất nhiều trên internet cho bộ ký tự của vv nhưng tôi đang sử dụng CI bây giờ, làm thế nào về charsets và CI ...
Vì vậy, tôi đã có rất nhiều câu hỏi về nó, tôi hy vọng ai đó có thể làm cho nó rõ ràng cho tôi:
Cách tốt nhất để đặt bộ ký tự toàn cầu là gì? Và những gì để thiết lập?
Trong đầu
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Trong config/config.php
$config['charset'] = 'UTF-8';
Trong config/database.php
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
Trong .htaccess, viết lại quy tắc của tôi và
php_value magic_quotes_gpc Off
AddDefaultCharset UTF-8
Cũng cần gửi một tiêu đề? Nơi để đặt? Cái gì đó như?
header('Content-Type: text/html; charset=UTF-8');
Trong biên tập viên của tôi (Notepad ++) lưu các tập tin như UTF-8? Hoặc UTF-8 (không có BOM)? Hoặc là ANSI tốt (đây là những gì tôi đang sử dụng bây giờ)?
Sử dụng utf8_unicode_ci hoặc utf8_general_ci cho cơ sở dữ liệu MySQL? Và tại sao?
Cách đọc nguồn cấp dữ liệu RSS, cách xử lý nhiều bộ ký tự? Tôi đang làm việc trên hai nguồn cấp dữ liệu của tôi, một với mã hóa UTF-8 và một với ISO-8859-1. Điều này sẽ được lưu trữ trong cơ sở dữ liệu và sẽ được so sánh đôi khi để xem có các mục mới hay không. Nó không thành công trên các ký tự đặc biệt.
Tôi đang làm việc với: - CI 2.0.3 - PHP 5.2.17 - MySQL 5.1.58
Xem thêm thông tin thêm:
mẫu:
function update_favorite($data)
{
$this->db->where('id', $data['id']);
$this->db->where('user_id', $data['user_id']);
$this->db->update('favorites', $data);
return;
}
Bộ điều khiển:
$this->favorites_model->update_favorite(array(
'id' => $id,
'rss_last' => $rss_last,
'user_id' => $this->session->userdata('user_id')
));
Khi $ rss_last là một giá trị “bình thường” như: “test” (không có dấu ngoặc kép) nó hoạt động tốt. Khi đó là một giá trị với chiều dài hơn như (tiếng Hà Lan): F-Secure vindt malware gặp certificaat van Maleisische overheid
tôi nhận được lỗi này:
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘vindt malware met certificaat van Maleisische overheid,
user_id
= ‘1’ WHERE `i’ at line 1UPDATE
favorites
SETid
= ‘15’,rss_last
= F-Secure vindt malware met certificaat van Maleisische overheid,user_id
= ‘1’ WHEREid
= ‘15’ ANDuser_id
= ‘1’Filename: /home/.../domains/....nl/public_html/new/models/favorites_model.php
Line Number: 35
người qua diễn đàn của CI nói với tôi để sử dụng này :
'rss_last' => iconv("UTF-8", "UTF-8//TRANSLIT", $rss_last)
này hoạt động tốt, nhưng tôi nghĩ rằng đây là không cần thiết ..
giá trị $ rss_last ra một RSS feed, như đã nói BEF quặng, đôi khi một mã hóa UTF-8 và thời điểm khác một tiêu chuẩn ISO-8859-1:
$rss = file_get_contents('http://www.website.com/rss.xml');
$feed = new SimpleXmlElement($rss);
$rss_last = $feed->channel->item[0]->title;
Dường như phần cuối cùng này là vấn đề, khi $ rss_last được thiết lập với giá trị nó hoạt động tốt:
$rss_last = 'F-Secure vindt malware met certificaat van Maleisische overheid';
Khi giá trị ra RSS nó cung cấp cho vấn đề ...
Một số câu hỏi nhiều hơn nữa ..
Chỉ cần thấy câu này: Detect encoding and make everything UTF-8
Giải pháp tốt nhất? Nhưng .. là iconv không đơn giản hơn, làm một cái gì đó như thế này:
$encoding = some_function_to_get_encoding_from_feed($feed);
$rss_last = iconv($encoding, "UTF-8//TRANSLIT", $feed->channel->item[0]->title);
Nhưng những gì để sử dụng cho "some_function_to_get_encoding_from_feed"? mb_detect_encoding?
Và mb_convert_encoding vs biểu tượngv?
Để bạn thêm: trong hàm SQL Update của bạn, tất cả các tham số đều có trong dấu ngoặc kép ngoại trừ _rss_last_. Có, tôi biết rằng nó được tạo ra bởi CI, nhưng điều này là đáng ngờ. –
_Điều này hoạt động tốt, nhưng tôi nghĩ điều này là không cần thiết .._ Quyền của bạn. –