Trang 1 / 3 123 LastLast
Hiển thị kết quả từ 1 đến 10 / 22
  1. #1
    Tham gia
    20-07-2004
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts

    Câu hỏi, cần giúp đỡ Vấn đề nhập dữ liệu Unicode trong Oracle từ VB.NET?

    Chào các anh chị.
    Tôi có vấn đề sau nhờ các anh chị hỗ trợ:
    Tôi dùng giao diện VB.NET nhập dữ liệu Unicode (font Tahoma,Arial...) vào Database Oracle NHANVIEN(MA char(10),TEN nvarchar2(40)). Trong Oracle tôi đã thiết lập cho Database characterset là UTF8. Tuy nhiên khi nhập dữ liệu thì vẫn không được, các font Unicode bị thay bằng dấu ?
    Khi tôi dùng iSQLPlus nhập dữ liệu thì OK.
    Xin mọi người chỉ giáo.
    Cám ơn nhiều.
    Quote Quote

  2. #2
    Tham gia
    09-12-2004
    Location
    Mùi Thôn
    Bài viết
    1,151
    Like
    19
    Thanked 38 Times in 26 Posts
    Chào bác thukhoa - Cái này tui cũng có gặp rồi, giống như bác vậy, mà cái này củ chuối lắm. Tui cũng có một cách giải quyết tạm thời thôi.
    Vấn đề là nằm ở chổ bộ gõ ấy. Mình cũng nghĩ không ra là tại sao, vì chuẩn UTF-8 thì cái nào mà chẳng được, nhưng mình có thử mới biết.
    Khi bạn nhập dữ liệu, nếu bạn dùng bộ gõ Vietkey thì chọn unocode dựng sẳn, còn nếu chọn Unikey bản 3.6 thì chọn XUTF-8.
    Bác cứ thử xem sao nhé.

  3. #3
    Tham gia
    20-07-2004
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts
    Chào bác DinhBaoChau, tôi đã làm theo hướng dẫn của bác và d8ã thực hiện được, tuy nhiên như vậy thì lúc người dùng nhập giao diện tiếng Việt thì lại ra mã.
    Ví dụ: "Bửu Điền" thì khi nhập trong giao diện chương trình thì lại là "Bá»­u Điền như vậy là không được rồi.
    Còn cách nào khác không nhỉ?
    À để tôi thử VietKey xem sao.
    Cám ơn bác Dinhbaochau nhiều nghen.
    ThuKhoa

  4. #4
    Tham gia
    09-12-2004
    Location
    Mùi Thôn
    Bài viết
    1,151
    Like
    19
    Thanked 38 Times in 26 Posts
    Cái này bác dùng VietKey và chọn unicode dựng sẳn là gõ được ngay mà. Bác thử xem sao nhé.

  5. #5
    Tham gia
    20-07-2004
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts
    Bác Dinhbaochau à,
    Tôi đã dùng thử VietKey2K chọn bảng mã Unicode dựng sẵn nhưng không được bác à. Font Unicode trong Oracle vẫn vậy, nếu dùng Unicode1 UTF8 thì mới được.
    ThuKhoa

  6. #6
    Tham gia
    09-12-2004
    Location
    Mùi Thôn
    Bài viết
    1,151
    Like
    19
    Thanked 38 Times in 26 Posts
    Vậy thì vấn đề được giải quyết rồi còn gì! Có phải đúng như tui nói là nằm ở bộ gỏ ấy, chọn mã đúng, và thằng nào "hạp" thì xài thằng đó. Chúc bác thành công

  7. #7
    Tham gia
    19-09-2004
    Bài viết
    28
    Like
    0
    Thanked 0 Times in 0 Posts
    Nếu bạn nhập dữ liệu bằng font Unicode dựng sẵn (giao diện VB.NET: nhớ chọn font trong các controls cho đúng nhé, save form ... as ... -> chọn Save with Encoding : unicode UTF8 gì gì đó với chuẩn 65001).
    Nếu bạn nhập vào và hiển thị trên giao diện VB.NET đúng font thì OK rồi, còn bạn dùng sqlplus hoặc các công cụ hỗ trợ cho Oracle để hiển thị thì không đúng do giao diện của hắn không hỗ trợ Uni.

  8. #8
    Tham gia
    20-07-2004
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts
    Bác lkn à
    Đầu tiên cũng cám ơn bác về các control VB6 mà bác share cho anh em.
    Nhưng đối với vấn đề Unicode thì theo tôi .NET là good. Tôi viết chương trình với Database là SQL Server thì Unicode OK, nhưng không hiểu thằng Oracle này nó làm sao đó, hay là mình học chưa tới nhỉ.
    Kiến thức là đại dương mà.
    ThuKhoa

  9. #9
    Tham gia
    20-07-2004
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts
    Chào mọi người
    Sau 1 thời gian ngâm cứu thì tôi đã hiểu ra được vấn đề như sau:
    Trong Oracle chỉ support Unicode theo bảng mã UTF8 mà không support UTF16(UCS2).
    UTF8 và UTF16 đều là Unicode nhưng mã hóa khác nhau.
    Mặc dù trong giao diện nhập .NET chúng ta save encoding UTF8 nhưng khi dùng ADO.NET thì lại convert sang UTF16. Vì vậy khi lưu trong Oracle thì không phải là định dạng UTF8.
    Vì vậy tôi đã viết 1 class để chuyển đổi giữa 2 bảng mã trên.
    Các anh chị nào gặp vấn đề này thì có thể để lại email và tôi sẽ gởi cho các anh chị.
    Thân chào

  10. #10
    Tham gia
    17-03-2005
    Bài viết
    5
    Like
    0
    Thanked 0 Times in 0 Posts
    Lúc tạo database, Oracle cho chọn 2 dạng characterset:

    - Database Charaterset (loại dữ liệu char, varchar2,...)
    - National Characterset (loại dữ liệu nchar, nvarchar2,...)

    Database Charaterset chỉ hỗ trợ varying-width characterset (UTF8...) ko hỗ trợ fixed-width characterset (AL16UTF16)

    National Characterset chỉ có thể là 1 trong 2 giá trị : UTF8 hoặc AL16UTF16

    bro thukhoa chọn kiểu dữ liệu cho column TEN là nvarchar nên Oracle sẽ encode character dựa trên giá trị của tham số National Characterset.

    bro connect database as sysdba rồi select * from v$nls_parameters
    -> xem NLS_CHARACTERSET có giá trị gì ?
    -> xem NLS_NCHAR_CHARACTERSET có giá trị gì ?

    bro post kết quả lên nha.
    Được sửa bởi lucky_lucke lúc 14:35 ngày 04-05-2005

Trang 1 / 3 123 LastLast

Bookmarks

Quy định

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