2010-04-22 35 views
7

tôi nên sử dụng cơ sở dữ liệu nào, nếu đơn đăng ký của tôi có nhiều ngôn ngữ (bao gồm tiếng Trung, tiếng Nhật, v.v ...)? Nói cách khác, MySQL là tốt hơn hay tệ hơn Postgres để xử lý unicode etc? (đây là hai cơ sở dữ liệu duy nhất mà công ty lưu trữ của tôi có)Cơ sở dữ liệu và ngôn ngữ nào xử lý Unicode tốt hơn?

Ngoài ra, ngôn ngữ nào tốt hơn để xử lý unicode? PHP hoặc Ruby/Rails?

+1

Tôi nghĩ bạn nên tạo một câu hỏi riêng cho ngôn ngữ. –

+0

Tôi thích khi mọi người bắt đầu học ngôn ngữ lập trình mới vì nhà cung cấp dịch vụ lưu trữ của họ đã cài đặt chúng. – newtover

Trả lời

7

Mysql không có hỗ trợ đầy đủ cho Unicode (ví dụ: Ký tự tiếng Trung ngoài BMP) (see). Nó sử dụng mã hóa 'utf8' bị tê liệt (không thực sự là UTF-8).

Postgresql dường như có hỗ trợ đầy đủ cho UTF-8 encoding (do đó, đối với tất cả các ký tự Unicode).

+3

Hoàn toàn đúng. MySQL lưu trữ 1-3 byte và PostgreSQL 1-4 byte cho mỗi UTF-8 char. Đi cho PostgreSQL. – BalusC

1

Cơ sở dữ liệu:

Theo kinh nghiệm của tôi, cả hai MySQL và Postgres xử lý Unicode khá ổn.

Ngôn ngữ:

  • PHP < = 5.3 có phần hạn chế liên quan đến unicode, trong khi sắp tới PHP 6 hứa hẹn sẽ khắc phục điều đó.
  • Ruby 1.8 có hỗ trợ unicode kém, nhưng 1.9 được cho là xử lý unicode độc ​​đáo (tôi không có kinh nghiệm riêng ở đó).

Hạn chế của PHP 5.3:

Có thể sử dụng PHP 5 cùng với unicode, nhưng sau đó người ta phải cẩn thận với chuỗi. Nhiều hàm chuỗi, ví dụ như hàm đếm số ký tự, trả về số byte, không phải số ký tự. Mặc dù có các chức năng bổ sung, trả về số ký tự.

Nếu đây là dự án mới, bạn sẽ có thể sử dụng các chức năng phù hợp ngay từ đầu.

Đối với dự án PHP hiện có của chúng tôi, tôi quyết định để nó ở đó (Windows 1252), do nó là một dự án nội bộ và giá trị giới hạn cho unicode (thật đáng buồn, tôi thực sự yêu unicode).

+0

Nếu trình điều khiển db của bạn không hỗ trợ unicode, bạn có thể đọc và viết các mảng byte thô và chuyển đổi chúng thành chuỗi bằng cách sử dụng mã hóa mong muốn của bạn. –

0

Trong trường hợp của tôi PostgreSQL là tốt hơn so với MySQL, MySQL không hoàn toàn hỗ trợ Unicode

+0

Điều đó đã được trả lời. Chỉ cần upvote câu trả lời mà bạn hoàn toàn đồng ý thay vì reposting nó một lần nữa. – BalusC

-1

PostgreSQL + PHP6 là sự lựa chọn tốt

+0

PHP6? Ở đâu? Họ đã không chi nhánh các công cụ utf16 và đưa ra một thiết lập lại một vài tháng trước đây? :-) –

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