it-swarm.asia

كيفية تكوين المحارف العالمية على MySQL

لقد حاولت تغيير مجموعة أحرف MySQL عبر my.cnf وفشلت. أضفت إعدادات المحارف المدرجة أدناه:

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

# ------------- MYSQL CHARSETS --------------
character_set_system = utf8
character_set_server = utf8
character_set_results = utf8
character_set_database = utf8
character_set_connection = utf8
character_set_client = utf8

collation_connection = utf8_general_ci
collation_database = utf8_general_ci
collation_server = utf8_general_ci

عندما قمت بتمكين هذه ، فشل MySQL في البدء. كيف يمكنني التأكد من أن كل شيء افتراضي لـ utf8 - دائمًا؟

تحديث

لا يزال هناك عدد قليل من الأماكن التي تواجه مشاكل في كونها UTF8

character_set_client    utf8
character_set_connection    utf8
character_set_database  latin1
character_set_filesystem    binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database  latin1_swedish_ci
collation_server    latin1_swedish_ci

لسوء الحظ ما زلت لم أتوصل إلى حل ... أي أفكار؟

حاليًا ، أستخدم هذا التكوين بنجاح:

[mysqld]
default-character-set = utf8
init-connect='SET NAMES utf8'
character-set-server = utf8


[mysql]
default-character-set = utf8

لكن PHPMyAdmin لا يزال يُظهر بعض latin1

character_set_client    utf8
character_set_connection    utf8
character_set_database  latin1
character_set_filesystem    binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database  latin1_swedish_ci
collation_server    latin1_swedish_ci
12
Webnet

تحتاج إلى دمج ما يلي في ملف my.cnf الخاص بك

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
default-character-set = utf8    
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

يمكنك العثور على مزيد من المعلومات على الصفحات اليدوية التالية

ردًا على إجابة مارك ، إذا كنت بحاجة إلى تحويل الجداول/قواعد البيانات الحالية إلى مجموعة الأحرف الصحيحة ، فستحتاج إلى استعلام ALTER مناسب. شيء مشابه لما يلي:

ALTER TABLE `table` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

بدلاً من ذلك ، هناك PHP script هنا وهو ما يفعله لك.

23
Ben Swinburne

إجابة بن على ما يرام ، ولكن تغيير الإعدادات لن يغير مجموعات مجموعات الجداول أو عمليات الترتيب الموجودة على الإطلاق. افعل ذلك ببيان ALTER TABLE المناسب.

لاحظ أنه إذا لم تحدده ، يتم إنشاء الجداول في مجموعة الأحرف الافتراضية لقاعدة البيانات. هذا هو إعداد لكل قاعدة بيانات يمكن ضبطه باستخدام ALTER DATABASE. لم يتم تعيين هذا أيضًا في my.cnf.

2
MarkR