sql >> Databáze >  >> RDS >> Oracle

c# načte SQL tabulku (se speciálními znaky) do DataSet

Zde je možné řešení, ale není vyzkoušeno, takže na to pamatujte!

Před časem jsem narazil na podobný problém se speciálními znaky v Oracle. Naše znaková sada je nastavena na UTF-16. Měl podivné věci, jako jsou přehlásky a další znaky ASCII mimo normální rozsah 32-127.

Jedna věc, kterou byste mohli zkusit, je nejprve provést kódování HTML pro cokoli mimo tento rozsah, načíst to do vaší datové tabulky v c# a poté, jak se datová tabulka zaplní (nebo poté, co byla vyplněna...), proveďte dekódování html na těchto polích.

Máme funkci kódování html, která to dělá za nás, například takto:

  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;

Takže by to mělo načíst data „řetězec“ do vaší tabulky a v každém případě, kdy máte speciální znaky, by se to zobrazilo jako „½“ nebo něco v tomto smyslu.

Pak na straně C# můžete udělat něco s dekódováním html:

using System.Web;

HttpUtility.HtmlDecode(mystring);

Opět... nevyzkoušeno. Ale mělo by být velmi snadné jej implementovat a otestovat a/nebo mírně upravit, aby fungoval.

Alternativním řešením by také bylo jednoduše provést opravu dat ve vaší databázi, aby se všechny tyto speciální znaky změnily na "běžné" reprezentace (tj. em-pomlčku na normální pomlčku). Můžete to udělat s některými regulárními výrazy pomocí funkce CHR() a pro zobrazení lichých dat pomocí funkce DUMP().




  1. Vygenerujte dotaz pomocí 5 tabulek

  2. Shell Script se sqlplus a speciálními znaky v hesle

  3. Jak vložit dotaz SQL do pole v yii

  4. Přidejte data z html formuláře do SQL databáze pomocí PHP