Maison base de données tutoriel mysql Orace查询数据出现乱码的问题解决思路

Orace查询数据出现乱码的问题解决思路

Jun 07, 2016 pm 05:56 PM
乱码 查询数据

经常有些朋友会遇到,我明明是输入的正确中文,为什么我在另外一台电脑上查询却出现乱码啦?其实这个是数据库在进行字符集转换的时候出现了问题,本文介绍解决方法,需要了解的朋友可以参考下

问题描述
经常有些朋友会遇到,我明明是输入的正确中文,为什么我在另外一台电脑上查询却出现乱码啦?其实这个是数据库在进行字符集转换的时候出现了问题,
下面通过测试来描述具体的情况:

1.环境
Oracle 数据库字符集:
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as scott
SQL> SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'NLS_CHARACTERSET';
PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
------------------------------ -------------------------------------------------------------------------------- ------------------------------------------------------------------------------
NLS_CHARACTERSET ZHS16GBK Character set
Oracle 数据库所在的客服端字符集:
在注册表的:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 如下图:

Oracle 所在的操作系统的字符集:
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Andy>chcp
活动代码页: 936
表示是:中国 - 简体中文(GB2312)

2.测试
字符集如下:
Oracle 数据库字符集:ZHS16GBK
Oracle 数据库客户端字符集:ZHS16GBK
操作系统字符集:中国 - 简体中文(GB2312)
输入测试数据:
SQL> INSERT INTO TAB_INDX
2 values(1,'汉字输入字符集测试','Chinese Input Test',sysdate);
1 row inserted
字符集不修改,进行测试数据现实:
SQL> select * from tab_indx where tid = 1;
TID TNAME TDESC SYSDT
---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -----------
1 汉字输入字符集测试 Chinese Input Test 2012/12/30
显示正常,
现在我把客服端的字符集修改为:UTF8
及注册表的:NLS_LANG=SIMPLIFIED CHINESE_CHINA.UTF8
现在字符集如下:
Oracle 数据库字符集:ZHS16GBK
Oracle 数据库客户端字符集:UTF8
操作系统字符集:中国 - 简体中文(GB2312)
现在再查询刚才输入的数据:
SQL> select tname,tdesc from tab_indx;
TNAME TDESC
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
发现查询出来的数据已经不能正常现实,因为这些汉字是以ZHS16GBK编码格式存储的,然而你查询出来后根据Oracle客服端的编码(UTF8)转换,及转成了UTF8的编码格式,但是操作系统是简体中文(GB2312),所以操作系统就把UTF8编码格式的数据,当成简体中文(GB2312)的编码格式数据显示,结果就出现了乱码,
现在我再插入一笔数据:
SQL> INSERT INTO TAB_INDX
2 values(1,'UTF8下汉字输入字符集测试','Chinese Input Test',sysdate);
1 row inserted
再查询:
SQL> select tname,tdesc from tab_indx;
TNAME TDESC
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
发现新插入的数据也出现了乱码,但是乱码跟刚才的值不一样??为什么呢?
因为输入的汉字,是简体中文(GB2312)的编码格式,当Oracle数据库按照客户端的编码格式传给数据库,Oracle数据库发现,Oracle数据库客户端是UTF8的编码格式,跟数据库的编码格式(ZHS16GBK)不一样,就进行字符集转换,UTF8-->ZHS16GBK,所以把简体中文(GB2312)的编码格式的数据当成UTF8,转为ZHS16GBK的编码格式数据,就已经出错啦,查询出来自然转换回去就不行啦
(本来需要测试Oracle数据库的字符集修改后的情况,这种情况暂时不测试)这里我们在把Oracle客户的字符集修改回去;
在注册表的:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
现在字符集如下
Oracle 数据库字符集:ZHS16GBK
Oracle 数据库客户端字符集:ZHS16GBK
操作系统字符集:中国 - 简体中文(GB2312)
再查询:
SQL> select tname,tdesc from tab_indx;
TNAME TDESC
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
汉字输入字符集测试 Chinese Input Test
UTF8????????????? Chinese Input Test
发现最开始输入的汉字正常啦,但是第二次输入的汉字,又变了,跟上次的乱码不一样????
虽然这里没有进行编码格式转换,但是上次在存数据的时候,已经是存的错误的编码格式,所以显示出来肯定不正确
其实还有好几种情况测试,由于本地环境的限制,所以测试的其它情况,大家可以去试试,如:数据库的字符集是UTF8,然后客服端的字符集变化,对汉字的输入输出有什么影响
根据上面的测试情况和我自己的分析,现在总结如下:
1.数据库的查询出来的数据,是Oracle数据库字符集,Oracle客户端字符集,操作系统字符集共同作用的结果。
2.Oracle存数据和查询数据都是通过Oracle数据库的字符集和Oracle客服端的字符集进行转换的,显示数据又是根据操作系统的字符集来确定的。
3.为了避免出现乱码必须要把Oracle客户端的字符集和操作系统的字符集设置成一样的。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre les numéros de page de mots tronqués Comment résoudre les numéros de page de mots tronqués Jun 25, 2023 pm 03:23 PM

Solution aux numéros de page de mots tronqués : 1. Ouvrez le document Word et cliquez sur l'option « Fichier » dans le coin supérieur gauche ; 2. Sélectionnez l'option « Plus », puis cliquez sur le bouton « Options » 3. Sélectionnez « Avancé » ; dans les options de mots ; 4. Recherchez "Afficher les codes de champ au lieu des valeurs de champ" dans "Afficher le contenu du document", décochez le devant et cliquez sur OK pour revenir à la page d'accueil.

Comment résoudre les caractères chinois tronqués sous Linux Comment résoudre les caractères chinois tronqués sous Linux Feb 21, 2024 am 10:48 AM

Le problème du chinois tronqué sous Linux est un problème courant lors de l'utilisation de jeux de caractères et d'encodages chinois. Les caractères tronqués peuvent être causés par des paramètres de codage de fichier incorrects, des paramètres régionaux du système non installés ou définis, des erreurs de configuration de l'affichage du terminal, etc. Cet article présentera plusieurs solutions de contournement courantes et fournira des exemples de code spécifiques. 1. Vérifiez le paramètre d'encodage du fichier. Utilisez la commande file pour afficher l'encodage du fichier. Utilisez la commande file dans le terminal pour afficher l'encodage du fichier : file-ifilename S'il y a "charset" dans la sortie.

Comment résoudre le code tronqué du démarrage de Tomcat Comment résoudre le code tronqué du démarrage de Tomcat Dec 26, 2023 pm 05:21 PM

Solutions au démarrage tronqué de Tomcat : 1. Modifiez le fichier de configuration de Tomcat ; 2. Modifiez la langue du système ; 3. Modifiez l'encodage de la fenêtre de ligne de commande ; 4. Vérifiez la configuration du serveur Tomcat ; fichier ; 7, essayez d’autres solutions. Introduction détaillée : 1. Modifiez le fichier de configuration conf de Tomcat, ouvrez le répertoire conf de Tomcat, recherchez le fichier "logging.properties", etc.

Que faire si le terminal Linux contient des caractères chinois tronqués Que faire si le terminal Linux contient des caractères chinois tronqués Mar 16, 2023 am 09:20 AM

Solution aux caractères chinois tronqués dans Linux tty : 1. Téléchargez la police fbterm via la commande « sudo apt-get install fbterm » ; 2. Exécutez la commande « sudo fbterm » 3. Changez la police et la taille de la police en « font-names » ; =Ubuntu Mono font-size=14” suffit.

Comment résoudre le problème des caractères chinois tronqués dans Windows 10 Comment résoudre le problème des caractères chinois tronqués dans Windows 10 Jan 16, 2024 pm 02:21 PM

Dans le système Windows 10, les caractères tronqués sont courants. La raison derrière cela est souvent que le système d'exploitation ne fournit pas de prise en charge par défaut pour certains jeux de caractères, ou qu'il y a une erreur dans les options de jeu de caractères définies. Afin de prescrire le bon médicament, nous analyserons en détail ci-dessous les procédures opératoires réelles. Comment résoudre le code tronqué de Windows 10 1. Ouvrez les paramètres et recherchez « Heure et langue » 2. Recherchez ensuite « Langue » 3. Recherchez « Gérer les paramètres de langue » 4. Cliquez sur « Modifier les paramètres régionaux du système » ici 5. Vérifiez comme indiqué et cliquez sur Assurez-vous juste.

Comment résoudre le problème des caractères tronqués dans les documents du système Win11 Comment résoudre le problème des caractères tronqués dans les documents du système Win11 Jun 29, 2023 pm 06:29 PM

Comment résoudre le problème des documents texte tronqués dans Win11 ? De nombreux utilisateurs ont des documents texte tronqués lorsqu'ils utilisent le système Win11 et ne peuvent pas les lire normalement. De nombreux amis ne savent pas comment résoudre ce problème. En fait, cette méthode n'est pas difficile. Ci-dessous, l'éditeur a compilé les étapes pour résoudre le problème des documents système Windows 11 tronqués. J'espère que cela pourra vous inspirer ! Étapes pour résoudre les documents système Windows 11 tronqués : 1. Tout d'abord, ouvrez le panneau de configuration de win11, entrez le panneau de configuration dans la zone de recherche ci-dessous, puis cliquez sur Rechercher pour accéder au panneau de configuration. 2. Après être entré dans le panneau, recherchez l'horloge et la zone et cliquez pour entrer, puis cliquez sur l'option de zone. 3. Après avoir entré, cliquez sur le panneau de gestion, puis cliquez sur Modifier les paramètres régionaux du système.

Méthode d'édition pour résoudre le problème des caractères tronqués lors de l'ouverture de fichiers dll Méthode d'édition pour résoudre le problème des caractères tronqués lors de l'ouverture de fichiers dll Jan 06, 2024 pm 07:53 PM

Lorsque de nombreux utilisateurs utilisent des ordinateurs, ils constateront qu'il existe de nombreux fichiers avec le suffixe dll, mais de nombreux utilisateurs ne savent pas comment ouvrir de tels fichiers. Pour ceux qui veulent savoir, veuillez consulter les détails suivants. pour ouvrir et modifier les fichiers dll : 1. Téléchargez un logiciel appelé "exescope", puis téléchargez-le et installez-le. 2. Cliquez ensuite avec le bouton droit sur le fichier dll et sélectionnez "Modifier les ressources avec exescope". 3. Cliquez ensuite sur « OK » dans la boîte de dialogue d'erreur contextuelle. 4. Ensuite, sur le panneau de droite, cliquez sur le signe « + » devant chaque groupe pour afficher le contenu qu'il contient. 5. Cliquez sur le fichier dll que vous souhaitez afficher, puis cliquez sur « Fichier » et sélectionnez « Exporter ». 6. Ensuite, vous pouvez

Résolvez le problème des caractères tronqués dans le bloc-notes Win11 Résolvez le problème des caractères tronqués dans le bloc-notes Win11 Jan 05, 2024 pm 03:11 PM

Certains amis veulent ouvrir un bloc-notes et constatent que leur bloc-notes Win11 est tronqué et ne savent pas quoi faire. En fait, il suffit généralement de modifier la région et la langue. Le Bloc-notes Win11 est tronqué : Première étape, utilisez la fonction de recherche, recherchez et ouvrez le "Panneau de configuration". Deuxième étape, cliquez sur "Modifier le format de la date, de l'heure ou des nombres" sous Horloge et région. Troisième étape, cliquez sur l'option "Gérer". au-dessus de la carte. La quatrième étape consiste à cliquer sur « Modifier les paramètres régionaux du système » ci-dessous. La cinquième étape consiste à modifier les paramètres régionaux actuels du système en « Chinois (simplifié, Chine) » et à cliquer sur « OK » pour enregistrer.

See all articles