Maison développement back-end Golang Discutez des causes et des solutions des caractères tronqués de l'oracle Golang

Discutez des causes et des solutions des caractères tronqués de l'oracle Golang

Apr 12, 2023 pm 06:14 PM

Lorsque Golang utilise la base de données Oracle, il est courant d'avoir des caractères tronqués. La manifestation spécifique est que les caractères chinois ou autres caractères spéciaux insérés dans la base de données ne peuvent pas être affichés correctement. Ce problème peut avoir plusieurs causes, analysons-les et résolvons-les une par une ci-dessous.

Tout d'abord, nous devons confirmer si la base de données Oracle elle-même prend en charge le jeu de caractères chinois. Pendant le processus de création de la base de données, vous devez choisir de prendre en charge les jeux de caractères chinois, tels que l'encodage UTF8, afin que les caractères chinois puissent être correctement enregistrés et affichés. Si le jeu de caractères correspondant n'est pas sélectionné lors de la création de la base de données, des caractères tronqués peuvent facilement apparaître lors de l'utilisation.

Deuxièmement, nous devons vérifier si le jeu de caractères est correctement défini dans le programme Golang. Dans Golang, nous pouvons gérer les jeux de caractères en définissant l'encodage des fichiers de code source ou en utilisant des bibliothèques spécifiques. Si le jeu de caractères utilisé par le programme n'est pas cohérent avec la base de données, des caractères tronqués apparaîtront. Dans le code Golang, vous pouvez utiliser le code suivant pour définir le jeu de caractères :

db, err := sql.Open("ora", "user/pass@192.168.1.100:1521/ORCL")
if err != nil {
    log.Fatal(err)
}
db.SetConnMaxLifetime(time.Hour)
db.SetMaxIdleConns(10)
db.SetMaxOpenConns(100)
db.Exec("ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE'")
db.Exec("ALTER SESSION SET NLS_TERRITORY='CHINA'")
db.Exec("ALTER SESSION SET NLS_CHARACTERSET='AL32UTF8'")
Copier après la connexion

Dans l'exemple ci-dessus, le package database/sql du langage Go est utilisé pour se connecter à la base de données Oracle et exécuter les tâches d'Oracle. Script SQL. Définir le jeu de caractères. Parmi eux, NLS_CHARACTERSET est défini sur le codage UTF8. Ce jeu de caractères peut enregistrer des caractères chinois et d'autres caractères internationaux. database/sql 包来连接Oracle数据库,并通过执行Oracle的SQL脚本来设置字符集。其中 NLS_CHARACTERSET 设置的是UTF8编码,这个字符集能够保存中文字符和其它国际字符。

最后,我们需要检查数据是否正确地进行了编码和解码。如果数据在数据库写入时正确地进行了编码(使用UTF8编码保存),在读取时也需要使用UTF8解码才能够正确地显示。我们可以使用Golang的 encoding 包来进行编码和解码操作,例如:

src := "你好,世界"

dst1 := make([]byte, len(src)*3)
dst1 = []byte(src)

dst2, err := unicode.UTF32(unicode.BigEndian, unicode.IgnoreBOM).NewEncoder().Bytes([]byte(src))
if err != nil {
    log.Fatal(err)
}

println(string(dst1))
println(string(dst2))
Copier après la connexion

上述示例中使用的是Go语言的 encoding/unicode 包进行编码,dst1 按原样保存中文字符,dst2

Enfin, nous devons vérifier que les données sont correctement encodées et décodées. Si les données sont correctement codées lors de leur écriture dans la base de données (enregistrées à l'aide du codage UTF8), elles devront également être décodées à l'aide de UTF8 pour s'afficher correctement lors de la lecture. Nous pouvons utiliser le package encoding de Golang pour effectuer des opérations d'encodage et de décodage, par exemple :

rrreee

L'exemple ci-dessus utilise le package encoding/unicode du langage Go pour l'encodage, dst1 enregistre les caractères chinois tels quels, tandis que dst2 est codé en UTF32, de sorte que le jeu de caractères UTF32 puisse être utilisé dans Oracle pour enregistrer et lire des données. 🎜🎜En résumé, pour résoudre le problème des caractères tronqués lorsque Golang utilise Oracle, nous devons nous assurer que la base de données elle-même prend en charge le jeu de caractères chinois, garantir que le programme Golang définit correctement le jeu de caractères et implémente le codage et le décodage corrects des données. Ce n’est que si ces étapes sont effectuées correctement que le problème des caractères tronqués pourra être définitivement résolu. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Quelles sont les vulnérabilités de Debian OpenSSL Quelles sont les vulnérabilités de Debian OpenSSL Apr 02, 2025 am 07:30 AM

OpenSSL, en tant que bibliothèque open source largement utilisée dans les communications sécurisées, fournit des algorithmes de chiffrement, des clés et des fonctions de gestion des certificats. Cependant, il existe des vulnérabilités de sécurité connues dans sa version historique, dont certaines sont extrêmement nocives. Cet article se concentrera sur les vulnérabilités et les mesures de réponse communes pour OpenSSL dans Debian Systems. DebianopenSSL CONNUTS Vulnérabilités: OpenSSL a connu plusieurs vulnérabilités graves, telles que: la vulnérabilité des saignements cardiaques (CVE-2014-0160): cette vulnérabilité affecte OpenSSL 1.0.1 à 1.0.1F et 1.0.2 à 1.0.2 Versions bêta. Un attaquant peut utiliser cette vulnérabilité à des informations sensibles en lecture non autorisées sur le serveur, y compris les clés de chiffrement, etc.

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Transformant du développement frontal au développement back-end, est-il plus prometteur d'apprendre Java ou Golang? Transformant du développement frontal au développement back-end, est-il plus prometteur d'apprendre Java ou Golang? Apr 02, 2025 am 09:12 AM

Chemin d'apprentissage du backend: le parcours d'exploration du front-end à l'arrière-end en tant que débutant back-end qui se transforme du développement frontal, vous avez déjà la base de Nodejs, ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Méthode de surveillance postgresql sous Debian Méthode de surveillance postgresql sous Debian Apr 02, 2025 am 07:27 AM

Cet article présente une variété de méthodes et d'outils pour surveiller les bases de données PostgreSQL sous le système Debian, vous aidant à saisir pleinement la surveillance des performances de la base de données. 1. Utilisez PostgreSQL pour reprendre la surveillance Afficher PostgreSQL lui-même offre plusieurs vues pour surveiller les activités de la base de données: PG_STAT_ACTIVITY: affiche les activités de la base de données en temps réel, y compris les connexions, les requêtes, les transactions et autres informations. PG_STAT_REPLIcation: surveille l'état de réplication, en particulier adapté aux grappes de réplication de flux. PG_STAT_DATABASE: Fournit des statistiques de base de données, telles que la taille de la base de données, les temps de validation / recul des transactions et d'autres indicateurs clés. 2. Utilisez l'outil d'analyse de journaux pgbadg

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Apr 02, 2025 pm 12:57 PM

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

See all articles