Oracle
 sql >> база данни >  >> RDS >> Oracle

c# прочете SQL таблица (със специални знаци) в DataSet

Ето едно възможно решение, но не е тествано, така че имайте го предвид!

Попаднах на подобен проблем преди време със специални знаци в Oracle. Имаме набор от символи UTF-16. Имаше странни неща като умлаути и други ASCII знаци извън нормалния диапазон 32-127.

Едно нещо, което можете да опитате, е първо да направите HTML кодиране на нещо извън този диапазон, да го заредите във вашата таблица с данни в c#, ​​след което, докато таблицата с данни се запълва (или след като бъде попълнена...), да извършите html декодиране на тези полета.

Имаме функция за HTML кодиране, която прави това вместо нас, ето така:

  FUNCTION HTML_Encode_Special_Characters
   (p_string IN VARCHAR2,
    p_do_encode IN VARCHAR2 DEFAULT 'Y')
  RETURN VARCHAR2 IS
    first_location number := REGEXP_INSTR(p_string, '([^' || CHR(1) || '-' || CHR(127) || '])');
    v_string VARCHAR2(32000);
    v_char VARCHAR2(1 char);
    v_ascii_number number;
  BEGIN
    IF p_do_encode = 'Y' AND first_location > 0 THEN
      v_string := p_string;

      FOR i IN first_location .. length(v_string) LOOP
        v_char := substr(v_string,i,1);
        v_ascii_number := ascii(v_char);
        IF v_ascii_number > 128 THEN
          -- just replace all of them
          v_string := REPLACE (v_string, v_char,'&#' || v_ascii_number || ';');
        END IF;
      END LOOP;

      RETURN (v_string);
    ELSE
      RETURN p_string;
    END IF;

  END;

Така че това трябва да зареди "низови" данни във вашата таблица и всеки случай, когато имате специални символи, ще се покаже като '½' или нещо подобно.

След това от страна на C# можете да направите нещо с html decode:

using System.Web;

HttpUtility.HtmlDecode(mystring);

Отново...непроверено. Но трябва да е много лесно за внедряване и тестване и/или леко коригиране, за да работи.

Алтернативно решение също би било просто да извършите корекция на данни във вашата база данни, за да промените всички тези специални знаци в "обикновени" представяния (т.е. тире em в нормално тире). Можете да направите това с някои регулярни изрази, като използвате функцията CHR() и да видите нечетни данни с помощта на функцията DUMP().




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да избера от масово събрана таблица с тип записи

  2. Реконструиране на Standby DB

  3. Как да отворите XML данни в Oracle

  4. Oracle PLS-00363:изразът '' не може да се използва като цел за присвояване

  5. къде трябва да сложа ресурси на инсталационната програма (wxs файл, dmg-script, икона) и как да конфигурирам maven antrun при внедряване на самостоятелно приложение