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

    Help me, Convert dữ liệu từ US7ASCII sang UTF8

    Hiên giờ tôi cần phải chuyển đổi dữ liệu Oracle từ TCVN3 sang Unicode.
    Có ai có kinh nghiệm xin chỉ giùm.

    Tôi xin cảm ơn.
    Quote Quote

  2. #2
    Tham gia
    19-10-2002
    Bài viết
    610
    Like
    1
    Thanked 4 Times in 4 Posts
    Tương tự như cách trong http://ddth.com/showthread.htm?t=75297 thôi.

  3. #3
    Tham gia
    21-05-2007
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts
    có anh nào biết cách thì làm ơn gửi cho em với ạ, cái link của anh QuanN em không vào được(The webpage cannot be found). Cám ơn các anh ạ.

  4. #4
    Tham gia
    21-05-2007
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts
    các bác giúp em với!

  5. #5
    Tham gia
    11-09-2006
    Bài viết
    24
    Like
    0
    Thanked 4 Times in 4 Posts
    Sửa lại của bác QuanN

    http://www.ddth.com/showthread.php?t=75297

    Đây là cách chuyển với Access
    http://vietunicode.sourceforge.net/h...taccessdb.html
    Với oracle thì bạn export, chuyển rồi import

    Chuyển font có thể sử dụng: unikey cách sử dụng
    http://vietnamjournalism.com/module....ticle&sid=1797

  6. #6
    Tham gia
    03-02-2006
    Bài viết
    197
    Like
    0
    Thanked 14 Times in 14 Posts
    ..nhớ lại một cách ngày xưa , để update lại cột dữ liệu.
    Bạn có thể sữa lại bảng map cho font chữ của mình.

    UPDATE tableA set cotA=Fn_FONT_CONV('TCVN3','UTF8',cotA)

    Dbs characterset phải là UTF8 nhe. Còn nếu characterset là kiểu khác,thì sẽ phải làm cách khác như Tránparent gateway

    CREATE TABLE CHARACTER_SET_MAP
    (
    CHARACTER_SET VARCHAR2(30 BYTE) NOT NULL,
    CODE_MAP VARCHAR2(2000 BYTE),
    BYTE_PER_CHAR NUMBER(1) NOT NULL
    )

    INSERT INTO CHARACTER_SET_MAP ( CHARACTER_SET, CODE_MAP,
    BYTE_PER_CHAR ) VALUES (
    'TCVN3', '@¸@µ@¶@·@¹@©@Ê@Ç@È@É@Ë@¨@¾@»@¼@½@ Æ@Ð@`@Î@Ï@Ñ@ª@O@¿@Ó@Ô@Ö@U@×@Ø@Ü@i@a@ @á@â@ä@«@è@å@æ@ç@é@¬@í@ê@ë@´@î@ó@ ï@ñ@¿@ô@­@ø@o@ö@÷@ù@ú@û@ü@¿@®@u'
    , 1);
    INSERT INTO CHARACTER_SET_MAP ( CHARACTER_SET, CODE_MAP,
    BYTE_PER_CHAR ) VALUES (
    'CP1258', '@a´@a`@a¿@a~@a¿@â@â´@â`@â¿@â~@â¿@a@a @a`@a¿@a~@a¿@e´@e`@e¿@e~@e¿@ê@ê´@ê`@ê¿ @ê~@ê¿@i´@i`@i¿@i~@i¿@o´@o`@o¿@o~@o¿@ô@ ´@ô`@ô¿@ô~@ô¿@o@o´@o`@o¿@o~@o¿@u´@u`@u ¿@u~@u¿@u@u´@u`@u¿@u~@u¿@y`@y¿@y~@y¿@d@y´'
    , 2);
    INSERT INTO CHARACTER_SET_MAP ( CHARACTER_SET, CODE_MAP,
    BYTE_PER_CHAR ) VALUES (
    'BKTCVN3', '@¸@µ@¶@·@¹@©@Ê@Ç@È@É@Ë@¨@¾@»@¼@½@ Æ@Ð@`@Î@Ï@Ñ@ª@O@¿@Ó@Ô@Ö@U@×@Ø@Ü@~@a@ @á@â@ä@«@è@å@æ@ç@é@¬@í@ê@ë@´@î@ó@ ï@ñ@¿@ô@­@ø@o@ö@÷@ù@ú@û@ü@¿@®'
    , 1);
    commit;


    FUNCTION Fn_FONT_CONV(
    PM_SOURCE_CHARSET VARCHAR2,
    PM_DEST_CHARSET VARCHAR2,
    PM_INPUT_STRING VARCHAR2
    ) RETURN VARCHAR2
    IS
    M_SOURCE_CHARSET VARCHAR2(1000);
    M_DEST_CHARSET VARCHAR(1000);
    M_DEST_BYTE_PER_CHAR NUMBER(1);
    M_SOURCE_BYTE_PER_CHAR NUMBER(1);
    i INTEGER;
    J INTEGER;
    PM_RET_VAL VARCHAR2(1000);
    src_str VARCHAR2(10);
    PM_INPUT_STRING_TMP VARCHAR2(1000);
    BEGIN

    IF PM_INPUT_STRING IS NULL THEN
    RETURN '';
    END IF;
    SELECT code_map,BYTE_PER_CHAR
    INTO M_SOURCE_CHARSET,M_SOURCE_BYTE_PER_CHAR
    FROM CHARACTER_SET_MAP
    WHERE character_set=PM_SOURCE_CHARSET;

    SELECT code_map,BYTE_PER_CHAR
    INTO M_DEST_CHARSET, M_DEST_BYTE_PER_CHAR
    FROM CHARACTER_SET_MAP
    WHERE character_set=PM_DEST_CHARSET;
    i:=1;
    LOOP
    EXIT WHEN I>LENGTH(PM_INPUT_STRING);
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,2)) IN ('y´','u','u ','ua','un','uo','uu','ô ','ô','ôm','ôn','ôc','ôt','ôp','ôi','ôu',' d ','d','da','da','dâ','de','dê','do','dô','do',' du','du','di'
    ,'o ','o','om','on','oc','ot','op','oi','ou','ê ','ê','êm','ên','êc','êt','êp','êi','êu',' a ','a','am','an','ac','at','ap','ai','au','â ','â','âm','ân','âc','ât','âp','âi','âu') THEN
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,1))='u' THEN
    PM_RET_VAL:=PM_RET_VAL||'­';
    END IF;
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,2))='y´' THEN
    PM_RET_VAL:=PM_RET_VAL||'u';
    END IF;
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,1))='ô' THEN
    PM_RET_VAL:=PM_RET_VAL||'«';
    END IF;
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,1))='d' THEN
    PM_RET_VAL:=PM_RET_VAL||'®';
    END IF;
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,1))='o' THEN
    PM_RET_VAL:=PM_RET_VAL||'¬';
    END IF;
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,1))='ê' THEN
    PM_RET_VAL:=PM_RET_VAL||'ª';
    END IF;
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,1))='a' THEN
    PM_RET_VAL:=PM_RET_VAL||'¨';
    END IF;
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,1))='â' THEN
    PM_RET_VAL:=PM_RET_VAL||'©';
    END IF;
    IF LOWER(SUBSTR(PM_INPUT_STRING,i,2)) IN ('y´') THEN
    i:=i+2;
    ELSE
    i:=i+1;
    END IF;
    ELSE
    J:=INSTR(M_SOURCE_CHARSET,'@'||LOWER(SUBSTR(PM_INP UT_STRING||'~',I,M_SOURCE_BYTE_PER_CHAR)),1,1);
    src_str:= '@'||LOWER(SUBSTR(PM_INPUT_STRING||'~',I,M_SOURCE_ BYTE_PER_CHAR));
    IF J>0 THEN
    J:=Fn_freq_instr(SUBSTR(M_SOURCE_CHARSET,1,j),'@', '');
    J:=INSTR(M_DEST_CHARSET,'@',1,J);
    PM_RET_VAL:=PM_RET_VAL|| SUBSTR(M_DEST_CHARSET,J+1,M_DEST_BYTE_PER_CHAR);
    IF M_SOURCE_BYTE_PER_CHAR=2 THEN
    I:=I+1;
    END IF;
    ELSE
    PM_RET_VAL:=PM_RET_VAL|| SUBSTR(PM_INPUT_STRING,I,1);
    END IF;
    I:=I+1;
    END IF;
    END LOOP;
    RETURN PM_RET_VAL;
    EXCEPTION WHEN OTHERS THEN
    -- dbms_output.put_line(PM_INPUT_STRING);
    RETURN 'ERROR';
    END Fn_FONT_CONV;

    Have fun

  7. #7
    Tham gia
    18-04-2005
    Location
    Hà Nội
    Bài viết
    15
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi ntphongnt View Post
    các bác giúp em với!
    Ku PhongNT FBF phải không? làm theo cách của anh Sigmasvn được chưa?

  8. #8
    Tham gia
    21-05-2007
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts
    Tiếc quá, hôm nay em mới quay lại đây, :P
    Cám ơn các anh nhiều ạ.
    Nhưng cái db của em charset của nó lại là US7ASCII chứ ko phải UTF8 mới đau, SP của anh sigmasvn ở trên em vừa chạy thử rồi nhưng nó báo lỗi cú pháp, cái này để em xem lại sau vậy.
    @Tia: em có biết anh ko nhỉ?

  9. #9
    Tham gia
    21-05-2007
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts
    @sigmasvn: anh ơi, trong function Fn_FONT_CONV, em thấy thiếu func Fn_freq_instr.

  10. #10
    Tham gia
    21-05-2007
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts
    Em ko cần convert db từ US7ASCII sang Unicode, em chỉ muốn lấy dữ liệu trong DB ra và hiển thị được tiếng Việt thôi, nhưng khi lấy dữ liệu ra bằng .NET(em đã dùng thử ODP.NET của cả Microsoft(System.Data.OracleClient) và Oracle(Oracle.DataAcess.Client)) thì chữ lại bị vỡ do Encode của thằng .NET(DataReader, Dataset hay Output Parameter) nó làm thay đổi format của dữ liệu được lấy ra. Hic, em bó tay rồi! Có cao thủ nào biết dón tay làm phúc với ạ

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
  •