2017-07-13 2 views
0

J'ai écrit un programme pour lire les données d'un fichier texte et le charger dans une table en utilisant le paquetage UTL_FILE dans oracle. En lisant quelques lignes des personnages se convertir en caractères spéciaux, par exemple:caractères du fichier du bloc-notes convertis en caractères spéciaux lors de la lecture de la procédure utl_file.get_line

string in file = 63268982_GHC –EXH PALOMARES EVA 
value entered into database = 63268982_GHC âEXH PALOMARES EVA 

J'essayé d'utiliser la fonction Convertir mais il n'a pas atteint quoi que ce soit.

Ma version Oracle est 11gR2 et utilise le jeu de caractères nls WE8ISO8859P1. Étant donné que ces chaînes représentent des noms de fichiers physiques, j'obtiens une incompatibilité lorsque j'essaie de faire correspondre le nom de fichier.

J'ai essayé Reconversion la valeur stockée dans Oracle en WE charset Retour à ascii comme ci-dessous:

convert('63268989_GHC âEXH PALOMARES','us7ascii','WE8ISO8859P1') 

mais le résultat est différent de ce qui était là dans un fichier texte lors de la lecture. Quelqu'un peut-il s'il vous plaît suggérer comment ce problème peut être surmonté.

Répondre

0

Le caractère dans le fichier n'est pas un trait d'union régulier (-, chr(45)), mais un En Dash/U+2013 stocké sous forme de trois octets, décimal 226, 128, 147 ou hex e2, 80, 93. Interprété individuellement plutôt que comme un multi-octets caractère, ceux-ci correspondent à – comme indiqué here.

Essayez d'ouvrir le fichier avec utl_file.fopen_nchar et de lire les lignes avec utl_file.get_line_nchar.

Oracle 11gR2 Database Globalization Support Guide: Programming with Unicode.