Обмен технологиями

Решите проблему искажения китайских символов в базе данных Oracle при чтении C# набора символов US7ASCII.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

👨 作者简介:大家好,我是Taro,全栈领域创作者
✒️ Персональная домашняя страница:Дон Хуан Таро
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏



Предисловие

Недавно мне потребовалось подключиться к системе HIS больницы и базе данных другой стороны. Оказалось, что больница использует Oracle.АМЕРИКАНСКАЯ_АМЕРИКА.US7ASCIIФормат кодирования закодирован, в результате чего данные на китайском языке, считываемые в программу, искажаются.

Вставьте сюда описание изображения


以下是本篇文章正文内容,下面案例可供参考

1. Решение

Поскольку кодировку данных больничного отделения изменить нельзя, мы протестировали множество методов и, наконец, выбрали более эффективный метод обработки (ODAC + OleDbConnection), используя для обработки независимый драйвер Oracle.

2. Установите библиотеку подключения System.Data.OleDb.

  1. Oracle.ManagedDataAccess.Client Это наиболее часто используемый пакет C# для подключения к базе данных Oracle. Это также библиотека доступа к данным .NET, официально предоставляемая Oracle, но она не может решить проблему искаженных символов.

  2. должен быть принятСистемные данные.OleDb , для обработки используется независимый драйвер Oracle, что является ключом к устранению искаженных китайских символов.
    Вставьте сюда описание изображения

Системные данные.OleDb Зависимости:
Вставьте сюда описание изображения

Основной код:

  1. Строка базы данных подключения:
<add connectionString="Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User ID=db;Password=db;" name="HIS" />
  • 1

Программный вызов:
Вставьте сюда описание изображения

3. Установите драйвер компонента ODAC локально.

Для ODAC: https://www.oracle.com/database/technologies/dotnet-utilsoft-downloads.html

После установки ODAC компьютер необходимо перезагрузить.
Вставьте сюда описание изображения
Вставьте сюда описание изображения
Продолжайте нажимать «Далее», пока установка не завершится.
Вставьте сюда описание изображения

Пожалуйста, добавьте описание изображения

4. Отредактируйте переменные системной среды.

На этом этапе необходимо обеспечить согласованность наборов символов локальной и клиентской базы данных, чтобы предотвратить искажение данных при локальном просмотре.

变量名:NLS_LANG |  变量值:AMERICAN_AMERICA.US7ASCII
  • 1

Код следующий (пример):
Вставьте сюда описание изображения

5. Отладка программы

  • Часть данных на китайском языке отображается нормально и больше не отображает искаженные символы.
    Вставьте сюда описание изображения

Подведем итог

Об этом я и расскажу сегодня. По историческим причинам ранние версии Oracle не имели китайских наборов символов (таких как oracle6, oracle7, oracle7.1), но с тех пор некоторые пользователи использовали базу данных и сохраняли ее в формате US7ASCII. набор символов китайский, в этой статье лишь кратко описывается использование библиотеки System.Data.OleDb, которая прекрасно решает проблему искажения китайского языка в базе данных Oracle с набором символов US7ASCII.