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

Как да запиша Unicode данни в oracle?

Виждам пет потенциални области за проблеми:

  1. Как всъщност вкарвате текста във вашето .NET приложение? Ако е твърдо кодиран в низов литерал, сигурни ли сте, че компилаторът приема правилното кодиране за вашия изходен файл?

  2. Може да има проблем в начина, по който го изпращате в базата данни.

  3. Може да има проблем с това как се съхранява в базата данни.

  4. Може да има проблем с начина, по който го извличате в базата данни.

  5. Може да има проблем с това как го показвате отново след това.

Сега области 2-4 звучат така, сякаш е по-малко вероятно да бъдат проблем, отколкото 1 и 5. Как показвате текста след това? Наистина ли го извличате от базата данни в .NET, или използвате Toad или нещо подобно, за да се опитате да го видите?

Ако го пишете отново от .NET, предлагам ви да пропуснете базата данни изцяло - ако просто покажете самия низ, какво виждате?

Имам статия, която може да ви бъде полезна за отстраняване на грешки в Unicode проблеми. По-специално, концентрирайте се върху всяко място, където кодирането може се объркате и се уверете, че всеки път, когато „показвате“ низ, изхвърляте точните символи на Unicode (като цели числа), за да можете да ги проверите, а не просто каквото текущият ви шрифт иска да покаже.

РЕДАКТИРАНЕ:Добре, значи базата данни е замесен някъде в проблема.

Азсилно предлагаме да премахнете нещо като ASP и HTML от уравнението. Напишете просто конзолно приложение, което нищо не прави но поставете низа и го извлечете отново. Накарайте го да изхвърля отделните символи на Unicode (като цели числа) преди и след. След това опитайте да видите какво има в базата данни (например с помощта на Toad). Не познавам функциите на Oracle за преобразуване на низове в поредици от отделни символи в Unicode и след това преобразуване на тези знаци в цели числа, но вероятно това би било следващото нещо, което бих опитал.

РЕДАКТИРАНЕ:Още две предложения (добре е да видите конзолното приложение, между другото).

  1. Посочете типа данни за параметъра, вместо просто да му давате обект. Например:

    command.Parameters.Add (":UnicodeString",
                            OracleType.NVarChar).Value = stringToSave;
    
  2. Помислете за използването на собствен драйвер на Oracle вместо вградения в .NET. Все пак може да пожелаете да направите това, тъй като по принцип се смята, че е по-бързо и по-надеждно, според мен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01264 във физическа готовност

  2. ODP.NET Oracle.ManagedDataAcess произволни грешки ORA-12570

  3. Има ли официална препоръка на Oracle за използването на явни ANSI JOIN срещу неявни присъединявания?

  4. Агрегат на Oracle за свързване на низове със запетая и за писане на персонализирани агрегати

  5. Урок за формуляри и отчети за Oracle 9i, Oracle 10g и Oracle 11g Developer Suite