Trang 3 trên tổng số 6 Đầu tiênĐầu tiên 12345... Cuối cùngCuối cùng
Từ 21 tới 30 trên tổng số 59 kết quả

Đề tài: Tiếng việt trong Firebird database

  1. #21
    Ngày gia nhập
    08 2017
    Bài viết
    3,072

    Mặc định Tiếng việt trong Firebird database

    + TCVN 6909 : 2001
    CÔNG NGHỆ THÔNG TIN - BỘ MÃ KÍ TỰ TIẾNG VIỆT 16-BIT
    https://vanbanphapluat.co/tcvn-6909-2001-cong-nghe-thong-tin-bo-ma-ki-tu-tieng-viet-16-bit

    + TCVN 12607:2019 về quy phạm thực hành sản xuất nước mắm

  2. #22
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    577

    Chú ý rằng cụm từ "16 bit" trong văn bản TCVN 6909:2001 là không chính xác, có thể gây hiểu nhầm.

    Chuẩn này là một phần của chuẩn Unicode v3. Unicode v1 quy định mã ký tự có độ dài đúng 16 bit. Nhưng từ v2 trở đi thì chỉ quy định một cách trừu tượng là mỗi ký tự được gán một số thứ tự nhất định nào đó, gọi là điểm mã [của ký tự].

    Còn một điểm mã được mã hóa một cách cụ thể thành một chuỗi bit như thế nào, nói riêng, bao nhiêu bit, là vấn đề khác.

    Vậy, Unicode từ v2 trở đi là một bảng mã trừu tượng, được thực hiện bằng những bảng mã cụ thể khác nhau: UTF-8, UTF-16, UCS-2, UCS-4 (UTF-32). Mã UCS-2 có độ dài cố định 2 byte (16 bit). Mã UTF-16 mở rộng UCS-2, có độ dài biến thiên 2 hoặc 4 byte. Mã UTF-8 có độ dài biến thiên từ 1 đến 4 byte. Mã UCS-4 (UTF-32) có độ dài cố định 4 byte.

    Điều nhập nhằng là có tài liệu dùng từ "Unicode" để chỉ một bảng mã cụ thể, thậm chí nhiều bảng mã cụ thể. Ở Microsoft, từ "Unicode" chỉ UCS-2 trong Windows ME và các phiên bản trước đó, và chỉ UTF-16 kể từ Windows 2000 trở đi. Và để cho rắc rối hơn, cả 2 mã "Unicode" này đều dùng định dạng little endian, trái với lẽ thường.

    UCS-4 (UTF-32) không có ứng dụng thực tế nào. UCS-2 và UTF-16 chỉ có 1 ứng dụng thực tế duy nhất (Microsoft Windows). Chỉ có UTF-8 là thông dụng.

    Khi mã hóa bằng UTF-8, một ký tự tiếng Việt có thể là 8, 16, hay 24 bit, nhưng vẫn tuân thủ TCVN 6909:2001.
    Đã được chỉnh sửa lần cuối bởi Ada : 30-04-2019 lúc 10:00 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  3. #23
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    446

    Với bảng mã unicode hiện nay, việc sắp xếp theo code point kiểu gì cũng cho kết quả xấu, unicode dựng sẵn thì khỏi nói rồi, unicode tổ hợp có khá hơn chút nhưng vẫn chưa đẹp

    - - - Nội dung đã được cập nhật ngày 30-04-2019 lúc 02:41 PM - - -

    Có cách để sắp xếp cho kết quả đẹp hơn là dùng unicode tổ hợp và định nghĩa 1 code point "không dấu mũ" nhỏ hơn code point của dấu mũ nhỏ nhất và 1 code point "không dấu thanh" nhỏ hơn code point của dấu thanh nhỏ nhất. Sau đó qui định nguyên âm nào cũng gồm 3 code point theo thứ tự nguyên âm không dấu- dấu mũ- dấu thanh. Về mặt hiển thị thì tạo font mới sao cho code point không dấu mũ và không dấu thanh không hiển thị gì cả là được

    Nhưng làm vậy là tạo ra một charset mới, không còn là charset cũ nữa. He he
    Đã được chỉnh sửa lần cuối bởi khoaph : 30-04-2019 lúc 03:05 PM.

  4. #24
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    577

    Thứ tự codepoint không thể dùng để sắp thứ tự chính tả bất kể mã hóa dựng sẵn hay là tổ hợp.

    Ví dụ, chữ đ, vốn là một ký tự đơn nhất, không thể tách rời thành d và dấu ngang. Thứ tự chính tả là d đ e, nhưng thứ tự codepoint lại là d e đ.

    Ví dụ khác, các dấu thanh. Thứ tự chính tả là huyền hỏi ngã sắc nặng, nhưng thứ tự codepoint lại là huyền sắc ngã hỏi nặng.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  5. #25
    Ngày gia nhập
    08 2017
    Bài viết
    3,072


  6. #26
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    446

    Mặc định Tiếng việt trong Firebird database

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Thứ tự codepoint không thể dùng để sắp thứ tự chính tả bất kể mã hóa dựng sẵn hay là tổ hợp.

    Ví dụ, chữ đ, vốn là một ký tự đơn nhất, không thể tách rời thành d và dấu ngang. Thứ tự chính tả là d đ e, nhưng thứ tự codepoint lại là d e đ.

    Ví dụ khác, các dấu thanh. Thứ tự chính tả là huyền hỏi ngã sắc nặng, nhưng thứ tự codepoint lại là huyền sắc ngã hỏi nặng.
    Về dấu thanh thì người đọc có thể học thứ tự chính tả mới
    Còn chữ đ thì bó tay

  7. #27
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    577

    Chính tả là khuôn vàng thước ngọc. Làm gì có cái gọi là "chính tả mới". Vả lại, hai ký tự có thể so sánh với nhau trong thời gian O(1) dễ dàng. Từ đó, dễ dàng so sánh hai từ của 1 ngôn ngữ đa âm tiết, như tiếng Anh, hay hai chữ của ngôn ngữ đơn âm tiết, như tiếng Việt. Nên vấn đề này không đáng bàn nữa.

    Đáng bàn là nơi mà chính tả không quy định. So sánh hai xâu nhiều từ/nhiều chữ.

    Ví dụ 1. So sánh cryptographic methodcryptologic methodology.

    Ví dụ 2. So sánh Nguyễn Võ VănTrần Vương Thị.

    Ad 2. Có hai cách.

    a) Xem như hai xâu ký tự, nghĩa là, sau khi chuẩn hóa,
    Code:
    nguyễnvõvăn
    trầnvươngthị
    b) Xem như hai xâu chữ (mỗi xâu 3 chữ), mỗi chữ là 1 xâu ký tự, nghĩa là, sau khi chuẩn hóa
    Code:
    nguyễn|võ   |văn
    trần  |vương|thị
    Hai cách, nói chung, cho hai kết quả khác nhau.

    Cách nào đúng?
    Đã được chỉnh sửa lần cuối bởi Ada : 01-05-2019 lúc 08:27 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  8. #28
    Ngày gia nhập
    08 2017
    Bài viết
    3,072

    Sắp xếp có thể theo ngữ nghĩa hoặc thói quen.

    - Ngày tháng YMD( YDM, DMY, DYM, MYD hoặc MYD) nếu không dùng giá trị số của nó, người ta sẽ so sánh thành phần có trọng số lớn trước, vd:
    Code:
    if( t1.Year > t2.Year ) return 1; 
    // else ...
    - Họ và tên người Việt, tên là trọng số lớn nhất.

    Xem các danh sánh thí sinh, bảng điểm, bảng lương người ta có áp dụng sắp xếp, có làm được không!

  9. #29
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    446

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Sắp xếp có thể theo ngữ nghĩa hoặc thói quen.

    - Ngày tháng YMD( YDM, DMY, DYM, MYD hoặc MYD) nếu không dùng giá trị số của nó, người ta sẽ so sánh thành phần có trọng số lớn trước, vd:
    Code:
    if( t1.Year > t2.Year ) return 1; 
    // else ...
    - Họ và tên người Việt, tên là trọng số lớn nhất.

    Xem các danh sánh thí sinh, bảng điểm, bảng lương người ta có áp dụng sắp xếp, có làm được không!
    Nếu chỉ sắp xếp tên họ thì có gì khó
    C++ Code:
    1. #include <wstring>
    2. #include <algorithm>
    3. using namespace std;
    4.  
    5. const wstring bang_ma=L" aaàảãáạăằẳẵắặâầẩẫấậbcdđeèẻẽéẹ...";// chuỗi này phải sửa lại cho đầy đủ các kí tự
    6. int sosanhkitu(wchar_t kt1, wchar_t kt2)
    7. {
    8.     size_type p1=bang_ma.find_first_of(kt1);
    9.     size_type p2=bang_ma.find_first_of(kt2);
    10.     // giả định luôn tìm được kí tự trong bang_ma
    11.     if( p1<p2) return -1;
    12.     else if(p1>p2) return 1;
    13.     else return 0;
    14. }
    15. int sosanhchuoi(wstring c1,wstring c2)
    16. // hàm này cho kết quả -1 nếu c1<c2, 1 nếu c1>c2, 0 nếu c1=c2
    17. {
    18.     int l=min(c1.length(), c2.length());
    19.     int i=0;
    20.     while(i<l)
    21.     {
    22.         int ss=sosanhkitu(c1[i],c2[i]);
    23.         if(ss!=0) return ss;
    24.         i++;
    25.     }
    26.     if(c1.length()<c2.length()) return -1;
    27.     else if( c1.length()>c2.length()) return 1;
    28.     else return 0;
    29. }

  10. #30
    Ngày gia nhập
    08 2017
    Bài viết
    3,072

    Không việc gì khó
    Chỉ sợ tiền không nhiều.

    Không tự làm thì mướn người khác làm.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn