Trang 2 trên tổng số 15 Đầu tiênĐầu tiên 123412... Cuối cùngCuối cùng
Từ 11 tới 20 trên tổng số 147 kết quả

Đề tài: Tiếng Việt cho i tờ

  1. #11
    Ngày gia nhập
    09 2016
    Bài viết
    1,009

    Mặc định Tiếng Việt cho i tờ

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    Cái tôi nói là mã của ký tự, mã kí tự unicode là 2 byte
    còn thực tế thì chuỗi là một dãy các byte, tùy theo kiểu encoding mà mỗi mã kí tự được biểu diễn theo những cách khác nhau, đối với kí tự unicode thì tôi biết 2 kiểu encoding là unicode encoding và utf8 encoding, đối với kiểu trước thì 2 byte tương ứng 2 byte, không có thay đổi, với kiểu sau thì các kí tự mã unicode có lúc biểu diễn bằng 1 byte, có lúc 2 byte, có lúc 3 byte... , nó lấy vài bit cuối của mỗi byte để xác định xem byte tiếp theo có thuộc kí tự không hay chuyển sang kí tự mới, cũng do cách biểu diễn như vậy mà 1 mã ký tự unicode có thể được biểu diễn bằng nhiều chuỗi byte khác nhau, vì vậy mới sinh ra cái gọi là normalize string
    Việc chi phải nóng, phải vội !
    - Có rảnh tổ hợp các ký tự "dấu" (accent) với các ký tự không nguyên âm,
    - Có rảnh tổ hợp vài ký tự "dấu" (accent) với một ký tự nguyên âm cũng được.

    utf8 bàn sau cũng chẳng sao.

    tổ hợp tức là tổ hợp 2 ký tự vẫn là 2 ký tự, số có thể hớn hơn 2, có hiệu ứng cùng ở một vị trí

    Phọt mô xa 2017

  2. #12
    Ngày gia nhập
    07 2011
    Bài viết
    462

    C# chơi kiểu này ác quá, Unicode tổ hợp có còn được xài nữa đâu, giờ ai cũng xài dựng sẵn hết rồi. Ko biết có cách nào chuyển chuỗi ToString kia thành dựng sẵn ko?

    edit: gọi s.Normalize() là được

    C# string sử dụng mã utf-16 nghĩa là nó cũng là variable-length string như utf-8 chứ ko phải fixed length đâu

    Code:
    string s = "";
    Console.WriteLine(s);
    Console.WriteLine(s.Length); //in ra 2, mặc dù  chỉ có 1 ký tự
    - - - Nội dung đã được cập nhật ngày 23-02-2017 lúc 10:28 AM - - -

    C Việt ko nhận emoji à Ko edit được luôn.

    Visual C# Code:
    1. Console.WriteLine("\uD83D\uDC4D");

    nó in ra 1 ký tự "THUMBS UP SIGN" nhưng lại cần tới 2 ký tự trong utf-16.
    Đã được chỉnh sửa lần cuối bởi INTP : 23-02-2017 lúc 11:23 PM.

  3. #13
    Ngày gia nhập
    09 2016
    Bài viết
    1,009

    nó in ra 1 ký tự ? nó in ra 2 ký tự ở cùng một vị trí (cell) thì đúng hơn
    Không chắc chỉ c# mà cả họ, cả nhà netFX ! Tôi e rằng trong Java, Delphi cũng có (chưa kiểm chứng).

    Mà cũng tuỳ nữa, như trong : http://ideone.com/rjHGzp, nó có kết quả như copy lại đây, nó dùng chuẩn (Normalize) sao ?
    Ideone Code:
    1. Ngày 21/11/2015, netFx dịch (Culture + fmt):
    2. 21 tháng 11
    3.  
    4. STT === Char === Code(decimal).
    5.  0        2         50
    6.  1        1         49
    7.  2                  32
    8.  3        t        116
    9.  4        h        104
    10.  5        á        225
    11.  6        n        110
    12.  7        g        103
    13.  8                  32
    14.  9        1         49
    15. 10        1         49
    16.  
    17. Done, press enter to quit ..
    Nó khác với kết quả tôi từng kiểm thử trên nhiều PC:
    Dos Code:
    1. Ngày 21/11/2015, netFx d?ch (Culture + fmt):
    2. 21 Tha'ng Muo`i Mô?t
    3.  
    4. STT === Char === Code(decimal).
    5.  0        2         50
    6.  1        1         49
    7.  2                  32
    8.  3        T         84
    9.  4        h        104
    10.  5        a         97
    11.  6        '        769
    12.  7        n        110
    13.  8        g        103
    14.  9                  32
    15. 10        M         77
    16. 11        u        432
    17. 12        o        417
    18. 13        `        768
    19. 14        i        105
    20. 15                  32
    21. 16        M         77
    22. 17        ô        244
    23. 18        ?        803
    24. 19        t        116
    25.  
    26. Done, press enter to quit ..

    CViet cũng có vài cái sai sót, vài công thức TEX, ... chưa hỗ trợ (chưa đúng)

    Phọt mô xa 2017
    Đã được chỉnh sửa lần cuối bởi fms17 : 24-02-2017 lúc 12:03 AM.

  4. #14
    Ngày gia nhập
    07 2011
    Bài viết
    462

    chắc là tùy OS, nên ktra với String.IsNormalized() hết cho chắc...

    Visual C# Code:
    1. Console.WriteLine(kq.IsNormalized());

    trong ideone thì nó cho ra `True`

    thử cho thêm dòng

    Visual C# Code:
    1. Console.WriteLine(typeof(string).Assembly.ImageRuntimeVersion); //C# version
    2. Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString());
    sẽ thấy tại sao:
    True
    v4.0.30319
    OSVersion: Unix 3.16.0.4

    ideone chạy trên Unix, nên CultureInfo nó khác với trên Windows:
    False
    v4.0.30319
    OSVersion: Microsoft Windows NT 6.2.9200.0

    chắc chỉ có ông Windows là còn xài unicode tổ hợp @_@

  5. #15
    Ngày gia nhập
    09 2016
    Bài viết
    1,009

    Lâu không dùng Linux, nên không dám bàn

    Kiểm thử trong Immediate Window:
    Immediate Code:
    1. "F" + (char)769 + (char)768 + (char)803
    2. //          sắc         huyền       nặng
    3. "F̣́̀"
    4. "F̣́̀".Length
    5. 4
    6. "F̣́̀".Normalize().Length
    7. 4

    s.Normalize() cũng như CViệt thôi, cũng lỗi, cũng cà dựt!

    Phọt mô xa 2017

  6. #16
    Ngày gia nhập
    07 2011
    Bài viết
    462

    Mặc định Tiếng Việt cho i tờ

    normalize ko ra vì ko có ký tự F+sắc+huyền+nặng trong Unicode chứ sao. Còn a+sắc, ă+sắc thì có á, ắ nên nó thay mã dựng sẵn vào

    thử chữ n+ngã đi, chắc nó ra được chữ ñ đó


    Visual C# Code:
    1. Console.WriteLine("n\u0303".Length);
    2. Console.WriteLine("n\u0303".Normalize().Length);
    in ra 2 1.
    Đã được chỉnh sửa lần cuối bởi INTP : 24-02-2017 lúc 01:00 AM.

  7. #17
    Ngày gia nhập
    09 2016
    Bài viết
    1,009

    Túm lại, tổ hợp n ký tự vẫn là n ký tự, nó là chữ cái, là hình vị (âm tiết)
    Chắc phải học lại về phiên âm, ngữ âm !

    Chuẩn hoá chỉ dành cho nguyên âm thôi sao, for Vietnamese only ?
    Anh Quách Tuấn Ngọc về hiu rồi, còn anh Nhạ thì chăm công nghìn việc, biết nhờ ai đây!

    Phọt mô xa 2017

  8. #18
    Ngày gia nhập
    07 2011
    Bài viết
    462

    cho nhiều ngôn ngữ lắm chứ đâu phải chỉ có VN. ñ là tiếng Latin đó.

    http://vietunicode.sourceforge.net/m...ZATION%20FORMS

    http://unicode.org/reports/tr15/
    Chữ Hàn cũng có? 가 ↔ ᄀ +ᅡ

    người ta có 4 kiểu normalize, VN chỉ xài C D là hết rồi, còn KC KD chắc là cho ngôn ngữ khác nữa... Unicode có 1.1 triệu ký tự, làm sao biết hết được, biết VN đủ rồi

  9. #19
    Ngày gia nhập
    09 2016
    Bài viết
    1,009

    Thú vị thật.

    Lúc nào rảnh rỗi, tôi sẽ mang ngôn ngữ CJK, CJKV, Hebrew, Thái, Lào ra thử

    Phọt mô xa 2017

  10. #20
    Ngày gia nhập
    09 2016
    Bài viết
    1,009

    Topic này có tham khảo các bài viết từ những topic liên quan, đã bàn luận từ lâu trong cViet, ex:
    http://diendan.congdongcviet.com/threads/t35417::xoa-dau-trong-chuoi-tieng-viet-nhu-the-nao.cpp/page3/

    Phọt mô xa 2017

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