Heim  >  Artikel  >  php教程  >  Einige Gedanken zur Lösung verstümmelter chinesischer Oracle-Zeichen unter Linux

Einige Gedanken zur Lösung verstümmelter chinesischer Oracle-Zeichen unter Linux

高洛峰
高洛峰Original
2016-12-15 16:46:572167Durchsuche

Nachdem ich kürzlich Oracle 10gR2 unter Linux installiert hatte, stieß ich auf das Problem der verstümmelten Zeichensätze, das ich zuvor online gesucht hatte, und ließ es dann wieder los, nachdem ich es gelöst hatte, also habe ich mir etwas Zeit genommen Testen Sie es ernsthaft. Nach einigen Tests wurde das Problem gelöst, damit ich sie in Zukunft finden kann.

Die Testumgebung ist wie folgt
Testplattform: VMware? Workstation 9.0.2 Build-1031769 (Hinweis: VM ist nicht in 32 oder 64 Bit unterteilt, aber wenn Sie ein 64-Bit-Betriebssystem installieren, wird ein Fehler gemeldet und die Erklärung wird unten gegeben )
Betriebssystem: Linux RedHat5.6 64-Bit-Betriebssystem
Datenbankversion: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit


1. Installieren Sie die 64-Bit-Version. Bit-Linux-Betriebssystem oder anderes 64-Bit auf der VM-Plattform Ein Fehler ist im Betriebssystem aufgetreten
1. Da die vorherigen Installationen alle 32-Bit-Linux-Betriebssysteme waren, war alles in Ordnung, bis ich zu einem neuen Unternehmen wechselte und 64 verwendete -Bit-Linux. Ich bin auf dieses Problem gestoßen und habe 64-Bit direkt auf der VM installiert. Bei der Verwendung von Linux wird gemeldet, dass sich die Anzahl der Bits des Betriebssystems von der der VM-Plattform unterscheidet (da es keinen Screenshot gab). Mal habe ich die spezifische Eingabeaufforderung vergessen), ähnlich dieser Eingabeaufforderung: „Sie haben diese virtuelle Maschine für die Verwendung eines 64-Bit-Gastbetriebssystems konfiguriert. Ein 64-Bit-Betrieb ist jedoch nicht möglich. Dieser Host unterstützt VT nicht.“ Um dieses Problem zu lösen, müssen wir die VT-Unterstützung des Systems aktivieren, dh die BIOS-Virtualisierungstechnologie unseres eigenen Computers aktivieren. Dies hängt davon ab, ob der jeweilige Personalcomputer die Virtualisierungstechnologie unterstützt und Motherboard-Unterstützungsvirtualisierung. Es ist sehr einfach, Linux neu zu installieren, nachdem Sie die Virtualisierungstechnologie im BIOS aktiviert haben.

2. Oracle zeigt unter Linux verstümmelte chinesische Zeichen an
1. Die Gründe für verstümmelte Zeichen in der Oracle-Datenbank:
Das Betriebssystem stimmt mit dem Server überein, die Client- und Server-Zeichensätze jedoch inkonsistent
Der Client und der Server sind konsistent, aber das Betriebssystem und der Server sind inkonsistent
2. Lösung:
Stellen Sie die relevanten Zeichensätze ein, um sicherzustellen, dass die Zeichensätze des Betriebssystems, des Clients und des Datenbankservers übereinstimmen sind gleich.

3. Je nach Situation:
Stellen Sie den Zeichensatz des Clients so ein, dass er mit dem des Servers übereinstimmt. Wenn der Zeichensatz des Servers UTF8 ist (es wird empfohlen, diesen Zeichensatz zu verwenden, wenn Erstellen einer Datenbank, sowohl Chinesisch als auch Englisch sind kompatibel)
Client-Linux-Setup-Schritte:
1. Wechseln Sie zum Installationsbenutzer der Oracle-Datenbank, mein Benutzername ist oracle
$ su oracle
                                                                                           $ vim .bash_profile                                                                // Bearbeiten Sie die .bash_profile-Datei unter dem Benutzer                                                                                                                                      PATH=$PATH:$HOME/bin:/usr/bin:/usr/sbin:/sbin
                                                      export ORACLE_SID=orcl 
                                          export. ORACLE_BASE=/u01/app/oracle 
                                                exportieren ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 
                                            PATH=$PATH:$ORACLE_HOME/bin 
                                             export ORACLE_TERM=xterm 
                                           export. LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ ORACLE_HOME/lib
                                               CLASSPATH exportieren =$ORACLE_HOME/JRE:ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

                                                       //设置这个参数就代表设置用户客户端的字符集,在创建数据库的时候不设置这个然后再设置这个值,最好保持与数据库一致,当然这个参数可以随时改变.(我自己的数据库是用UTF8字符集)

                                       $ source .bash_profile               //执行source命令使修改完的.bash_profile文件生效
                       Ja,就是如果你插入数据时的字符集不是UTF8下执行的, 当你客户端和服务器都变成UTF8字符集后, 以后插入的中文可能显示就为乱码了.所以说只有三个点(客户端、操作 系统 、 数据库) 的 字符集 保持 一致 的 时候 才 能 让 数据库 的 的 中文 显示 显示。

3. 针对 情况
Da mein Betriebssystem LINUX ist, gebe ich nur meine eigene Methode für die Linux-Plattform an, um chinesische Schriftarten zu testen. Ich habe mich für die direkte Installation chinesischer Schriftarten unter Linux entschieden Chinesisch (PS: Natürlich muss der Unternehmensserver dieses Problem nicht berücksichtigen, da Programmierer ihre eigenen Schriftarten so festlegen, dass sie mit der Datenbank übereinstimmen. Der Grund, warum ich die Eingabemethode installiert habe, ist, dass ich versuchen möchte, die drei zu verwenden Unter den gleichen Umständen treten keine verstümmelten Zeichen auf, unabhängig davon, ob Sie chinesische Zeichen eingeben. Denn wenn in der Vergangenheit die Zeichen der drei (Betriebssystem, Client, Datenbank) auf meiner virtuellen Maschine inkonsistent waren, wurden sie oft in der Testdatenbank angezeigt. Manchmal konnten chinesische Zeichen normal eingefügt und angezeigt werden, manchmal jedoch nicht. Um sicherzustellen, dass die von meiner Eingabemethode eingegebenen Zeichen auch UTF8 sind und ich Chinesisch direkt in der virtuellen Maschine eingeben kann, habe ich die chinesische Eingabemethode direkt unter Linux installiert.
1. Hier sind übrigens auch die Schritte zur Installation der chinesischen Eingabemethode unter LINUX aufgeführt, was Ihnen in Zukunft auch die eigene Suche erleichtern wird.
LINUX wechselt zum Root-Benutzer, lädt die Linux-Installations-CD oder ISO-Spiegeldatei
# Mount /DEV /CDROM /MNT // Installationspaket mit chinesischer Eingabemethode, das installiert werden muss
                            //Listen Sie die erforderlichen Elemente auf Installationspakete für die chinesische Eingabemethode, alle Dateien beginnen mit scim
Installieren Sie die chinesische Eingabemethode. Die erforderlichen Installationspakete lauten wie folgt: (Sie müssen sie in der folgenden Reihenfolge installieren und Linux nach der Installation neu starten)                    2. scim-1.4. 4 -41.el5.x86_64.rpm                                                                                                                                                                                     scim-tables-0.5.6-7. 0.5.6-7.x 86_64.rpm                                                                                                        # RPM -IVH Scim-Libs-1.4.4-41.EL5.X86_64.rpm // Hier ist nur die erste Paketmethode aufgeführt. Die Installationsmethode der letzten 5 Pakete ist dieselbe. Denken Sie daran, Linux neu zu starten nach der Installation.

2. Wechseln Sie nach der Installation der chinesischen Eingabemethode zum Root-Benutzer und geben Sie das Verzeichnis /etc/sysconfig/i18n ein, um den Zeichensatz des Linux-Betriebssystems festzulegen.
$ echo $LANG (oder eingeben: locale) //Überprüfen Sie den Zeichensatz des Linux-Betriebssystems unter dem Oracle-Benutzer
                                                                  /sysconfig/i18n //Ändern Sie den Standardzeichensatz von Linux in i18n
                                                                                                                                                                              an Für: LANG="en_US.UTF-8" en_US stellt dar, dass das System selbst auf Englisch angezeigt wird, Chinesisch lautet: zh_CN           SYSFONT="latarcyrheb-sun16"                                                                                                   Wirksam werden.
(PS: Tatsächlich, Beim Ändern dieses Ordners ist ein Problem aufgetreten, d. ZHS16GBK“, und wenn dann der Quellbefehl ausgeführt wird, wird ein Fehler gemeldet, was bedeutet, dass kein ZHS16GBK-Zeichensatz vorhanden ist. Der ZHS16GBK-Zeichensatz kann mit dem Befehlsgebietsschema -a nicht gefunden werden. Aus diesem Grund habe ich UTF8 als verwendet Aber dann habe ich darüber nachgedacht, dass auf dem Server eines allgemeinen Unternehmens das Betriebssystem nicht betroffen sein sollte, solange die Zeichensätze des Clients und des Oracle-Servers identisch sind. Großartig, weil Programmierer bei der Entwicklung die ZHS16GBK-Kodierung in ihren eigenen Programmen angeben können, sodass die Zeichensätze des Programms + des Clients + des Oracle-Servers konsistent sind. Ist diese Vermutung richtig? Ich suche immer noch online, um herauszufinden, wie man den ZHS16GBK-Zeichensatz installiert.

3. Wechseln Sie nach der Änderung zurück zum Oracle-Benutzer und verwenden Sie dann den Befehl locale oder echo $LANG, um den aktuellen Betrieb zu überprüfen Systemzeichensatz, Sie werden feststellen, dass es mit dem Client und der Datenbank übereinstimmt, beide sind UTF8. Wenn Sie zu diesem Zeitpunkt die Testumgebung der Oracle-Datenbank aufrufen, fügen Sie Chinesisch in die Tabelle ein, ändern Sie es und fragen Sie es ab wird normal angezeigt und es werden keine verstümmelten Zeichen mehr angezeigt.


Zusammenfassung:
Die Konvertierung von Zeichensätzen ist ein sehr komplizierter Prozess. Es kann sein, dass ich einige komplexere Probleme hinzufüge, aber die Voraussetzung ist nichts anderes als die Wartung der drei , Betriebssystem, Client, Datenbankserver) haben den gleichen Zeichensatz. Außerdem habe ich festgestellt, dass auch verschiedene Zeichensätze konvertiert werden können, aber die Konvertierung ist gefährlich, da Sie nicht wissen, wann die Konvertierung fehlschlägt, also am sichersten Der beste Weg ist, den Zeichensatz der Datenbank nicht zu ändern, es sei denn, es handelt sich um eine Testumgebung. Das Risiko ist sehr hoch. Wenn Sie also eine Datenbank erstellen, müssen Sie darüber nachdenken, welchen Zeichensatz Sie verwenden möchten.


Beispiel:

SYS@orcl>select * from test; --------------------------------------------- 99 Uns geht es allen gut Kind 123 Guangzhou Hua Information Co., Ltd. SYS@orcl>in Testwerte einfügen (3,'Baiyun District, Guangzhou, China');1 Zeile erstellt.SYS@orcl>commit;Commit abgeschlossen.SYS@orcl>select * vom Test; ID NAME --------------- ----- 99 Wir sind alle gute Kinder 123 Guangzhou Hua Information Co., Ltd. 3 Baiyun District, Guangzhou, China Für einige Einblicke und verwandte Artikel beachten Sie bitte die chinesische PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn