Comment puis-je régler l'encodage des caractères pour Oracle 10g avec JDBC
Je suis à l'aide de Java et base de données Oracle 10g.
Comment puis-je spécifier le codage des caractères comme l'UTF-8 pour l'Oracle de la base de données avec JDBC?
Et comment puis-je connaître l'encodage utilisé par JDBC?
Les données communiquées par le mince Oracle JDBC driver est toujours envoyé en tant que UTF-16 (java représentation interne). Le serveur de base de données va traduire que dans n'importe quel jeu de caractères nationaux, il a été configuré pour utiliser (donc si la base de données a été mis en place pour être en UTF-8, cette conversion se fera automatiquement). Notez que le jeu de caractères est définie au niveau Base de données, et non pas au schéma ou au niveau de la connexion.
Pour trouver le jeu de caractères configuré sur la base de données, exécuter cette requête:
SELECT value$ FROM sys.props$ WHERE name ='NLS_CHARACTERSET';
(le compte que vous utilisez pour vous connecter à la db aurez besoin d'avoir les autorisations nécessaires à la lecture des tables système pour ce faire)
La base de données Oracle jeu de caractères est définie lorsque la base de données est créé et est très douloureuse, en général, pour changer. Votre application Java ne va pas être en mesure de spécifier le jeu de caractères de la base de données. Vous pouvez voir ce que la base de données et de jeu de caractères nationaux sont
SELECT *
FROM v$nls_parameters
WHERE parameter LIKE '%CHARACTERSET'
Depuis votre base de données utilise le jeu de caractères ISO 8859-1, il ne sera pas en mesure de stocker des caractères de langues Asiatiques. Vous pouvez suivre les instructions affichées sur jeu de caractères de la migration dans les 10g de la Mondialisation un Guide de Soutien pour modifier la base de données du jeu de caractères de votre base de données existante. Vous aurez besoin de travailler avec le DBA pour cela, car il va affecter l'ensemble de la base de données.
En interne, Java, les chaînes sont toujours Unicode (UTF-16 en particulier), donc il n'y a pas beaucoup que vous pouvez faire pour le configurer. La sortie de votre application Java peut ne pas être en Unicode-- si votre application Java est, par exemple, générer un site web, il ya une bonne possibilité que les pages web qui sont générées à l'aide de certains non-jeu de caractères Unicode. Mais je ne pense pas que c'est ce que vous parlez.
Mon problème est de gérer les différentes langues especail ceux des langues Asiatiques. Notre système reçoit des messages de partout dans le monde un srd emessages sont transportés via HTTP corps (au format JSON). J'ai besoin de stocker ces messages dans une base de données et ensuite les gens peuvent les récupérer et les afficher. Je suis en train d'utiliser l'utf-8 à l'appui de cette et jeu la HTTP content-type de codage utf-8, mais charaters sont encore foiré dans la base de données Qu'est-ce que la base de données de jeu de caractères et le jeu de caractères nationaux (c'est la sortie de la requête que j'ai posté)? Êtes-vous de stocker les données dans un VARCHAR2 de la colonne? Ou dans un NVARCHAR2 de la colonne? c'est WE8ISO8859P1 qui est "ISO 8859-1 d'europe de l'Ouest". Je suis à l'aide de varchar2. comment puis-je changer la base de données du jeu de caractères utf-8 dans oracle 10G? merci beaucoup J'ai ajouté un lien dans ma réponse pour le jeu de caractères de la migration chapitre de la Mondialisation de Soutien Guide qui parle de changer le jeu de caractères de la base de données existante.
Les données communiquées par le mince Oracle JDBC driver est toujours envoyé en tant que UTF-16 (java représentation interne). Le serveur de base de données va traduire que dans n'importe quel jeu de caractères nationaux, il a été configuré pour utiliser (donc si la base de données a été mis en place pour être en UTF-8, cette conversion se fera automatiquement). Notez que le jeu de caractères est définie au niveau Base de données, et non pas au schéma ou au niveau de la connexion.
Pour trouver le jeu de caractères configuré sur la base de données, exécuter cette requête:
(le compte que vous utilisez pour vous connecter à la db aurez besoin d'avoir les autorisations nécessaires à la lecture des tables système pour ce faire)
OriginalL'auteur Chris
Je ne suis pas sûr de comprendre la question.
La base de données Oracle jeu de caractères est définie lorsque la base de données est créé et est très douloureuse, en général, pour changer. Votre application Java ne va pas être en mesure de spécifier le jeu de caractères de la base de données. Vous pouvez voir ce que la base de données et de jeu de caractères nationaux sont
Depuis votre base de données utilise le jeu de caractères ISO 8859-1, il ne sera pas en mesure de stocker des caractères de langues Asiatiques. Vous pouvez suivre les instructions affichées sur jeu de caractères de la migration dans les 10g de la Mondialisation un Guide de Soutien pour modifier la base de données du jeu de caractères de votre base de données existante. Vous aurez besoin de travailler avec le DBA pour cela, car il va affecter l'ensemble de la base de données.
En interne, Java, les chaînes sont toujours Unicode (UTF-16 en particulier), donc il n'y a pas beaucoup que vous pouvez faire pour le configurer. La sortie de votre application Java peut ne pas être en Unicode-- si votre application Java est, par exemple, générer un site web, il ya une bonne possibilité que les pages web qui sont générées à l'aide de certains non-jeu de caractères Unicode. Mais je ne pense pas que c'est ce que vous parlez.
Qu'est-ce que la base de données de jeu de caractères et le jeu de caractères nationaux (c'est la sortie de la requête que j'ai posté)? Êtes-vous de stocker les données dans un VARCHAR2 de la colonne? Ou dans un NVARCHAR2 de la colonne?
c'est WE8ISO8859P1 qui est "ISO 8859-1 d'europe de l'Ouest". Je suis à l'aide de varchar2. comment puis-je changer la base de données du jeu de caractères utf-8 dans oracle 10G? merci beaucoup
J'ai ajouté un lien dans ma réponse pour le jeu de caractères de la migration chapitre de la Mondialisation de Soutien Guide qui parle de changer le jeu de caractères de la base de données existante.
OriginalL'auteur Justin Cave