Oracle Unicode problème lors de l'utilisation de NLS_CHARACTERSET est WE8ISO8859P1 et NLS_NCHAR_CHARACTERSET est al16utf16, respectivement, et ColdFusion comme langage de programmation
J'ai 2 base de données Oracle 10g, XE et de l'Entreprise
XE
Entreprise
et ce sont le type de données que j'ai utiliser dans la table de test
et puis j'ai essayé de tester d'insérer quelques Unicode char de http://www.sustainablegis.com/unicode/
et les résultats sont
XE
Entreprise
pour ce test, j'utilise ColdFusion 9 developer edition
<cfprocessingDirective pageencoding="utf-8">
<cfset setEncoding("form","utf-8")>
<form action="" method="post">
Unicode : <br>
<textarea name="txaUnicode" id="txaUnicode" cols="50" rows="10"></textarea>
<br><br>
Language : <br>
<input type="Text" name="txtLanguage" id="txtLanguage">
<br><br>
<input type="Submit">
</form>
<cfset dsn = "theDSN">
<cfif StructKeyExists(FORM, "FIELDNAMES")>
<cfquery name="qryInsert" datasource="#dsn#">
INSERT INTO UNICODE
(
C_VARCHAR2,
C_CHAR,
C_CLOB,
C_NVARCHAR2,
LANGUAGE
)
VALUES
(
<cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#FORM.TXAUNICODE#">,
<cfqueryparam cfsqltype="CF_SQL_CHAR" value="#FORM.TXAUNICODE#">,
<cfqueryparam cfsqltype="CF_SQL_LONGVARCHAR" value="#FORM.TXAUNICODE#">,
<cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#FORM.TXAUNICODE#">,
<cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#FORM.TXTLANGUAGE#">
)
</cfquery>
</cfif>
<cfquery name="qryUnicode" datasource="#dsn#">
SELECT *
FROM UNICODE
ORDER BY LANGUAGE
</cfquery>
<table border="1">
<thead>
<tr>
<th>LANGUAGE</th>
<th>C_VARCHAR2</th>
<th>C_CHAR</th>
<th>C_CLOB</th>
<th>C_NVARCHAR2</th>
</tr>
</thead>
<tbody>
<cfoutput query="qryUnicode">
<tr>
<td>#qryUnicode.LANGUAGE#</td>
<td>#qryUnicode.C_VARCHAR2#</td>
<td>#qryUnicode.C_CHAR#</td>
<td>#qryUnicode.C_CLOB#</td>
<td>#qryUnicode.C_NVARCHAR2#</td>
</tr>
</cfoutput>
</tbody>
</table>
de ce guide http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10749/ch6unicode.htm#i1007297 je pense que pour mon Entreprise de base de données, il doit produire la même chose que XE (au moins pour NVARCHAR2 colonne) depuis le solution typique à partir de ce guide a dit:
- Utilisation NCHAR et NVARCHAR2 types de données pour stocker des caractères Unicode
- Garder WE8ISO8859P1 que la base de données du jeu de caractères
- Utilisation al16utf16, respectivement que le jeu de caractères nationaux
Alors, comment cela fonctionne aussi dans ma base de données d'Entreprise?
Merci
🙂
OriginalL'auteur tsurahman | 2011-02-23
Vous devez vous connecter pour publier un commentaire.
Première base de données stocke les valeurs dans l'encodage utf-8, deuxième en iso-8859-1(en plus de la N-types de données), cependant vous êtes de la rédaction de ces deux valeurs en utf-8 alors d'abord on est d'accord, mais la seconde est mal décodé.
OriginalL'auteur el vis
WE8ISO88591 encodage a une limite de jeu de caractères et ne peut pas stocker tous les caractères unicode. Veuillez vous référer à http://en.wikipedia.org/wiki/ISO/IEC_8859-1 pour la liste des caractères pris en charge.
OriginalL'auteur Salman Hameed
La première étape consiste à vérifier la NLS variables d'environnement, car elles déterminent la conversion (si nécessaire). Vérifiez également le contenu pour NLS_SESSION_PARAMETERS à l'intérieur d'un coldfussion page .
OriginalL'auteur FerranB
La NVARCHAR2 chose combinée avec WE8ISO88591 a un côté méchant effet si vous utilisez des littéraux dans les requêtes. La totalité de la requête est converti par les NLS_CHARSET encodage, donc si il ne peut pas encoder vos personnages, vous pourriez être en difficulté. Mais cela ne devrait pas arriver lié aux paramètres.
OriginalL'auteur schlenk