Sto facendo un Sistema di Gestione della Biblioteca, sto cercando di aggiungere il supporto araba nel mio progetto, ma io sono in difficoltà come segue,Recupero arabo dalla colonna MSSQL NVARCHAR
durante l'inserimento dei dati in SQL tramite query cioè
Insert into book_info values(25, N'جاوا', N'Author',N'Publisher',2014,N'Subject',50,N'Language','Latest',5)
l'elenco delle colonne in book_info è la seguente- Prenota ID (int)
- Titolo libro (nvarchar (50))
- Autore (NVA rchar (50))
- Editore (nvarchar (50))
- Pubblicare Anno (int)
- Soggetto (nvarchar (50))
- Prezzo (int)
- Language (nvarchar (50))
- Edition (nvarchar (50))
- parte (int)
quindi quando eseguo questa query attraverso il mio progetto,
SQL Management Studio
mostra alcuni codificato Personaggi come'مجتبیٰ'
al posto di caratteri arabi, e non solo inSQL Management Studio
ma anche quando si selezionano i dati nel progetto. Nota: questi valori a richiesta sono presi datextfield
attraverso.getText()
funzioneE se saltiamo il primo problema eseguendo la query in
SQL Management Studio
, in questo modo il primo problema viene risolto temporaneamente comeSQL Management Studio
sta mostrando i caratteri arabi quando si seleziona i dati, ma ancora una volta quando selezioniamo dal nostro software e mostrarlo in da ottenere dati daResultSet
come "TextF.setText(ResultS.getNString())
" mostra "??????
" nel campo di testo al posto di caratteri arabi.
non riesco a riprodurre il problema, che non è sorprendente. Nvarchar di SQL Server non richiede alcun trattamento speciale per archiviare qualsiasi carattere Unicode. Il problema è sempre una conversione durante il caricamento o la lettura dei dati, in genere cercando di "aiutare" il database codificando la codepage errata. Dov'è il codice che inserisce i dati nel database o lo legge? Sei * assolutamente * sicuro di passare le stringhe Unicode? Hai provato a utilizzare query parametrizzate in modo da non dover creare stringhe con i valori? –
I colpevoli più probabili sono i metodi getText, setText. Sospetto che assumano che le stringhe che passi siano stringhe ASCII, risultanti in errori di conversione (che sono rappresentati dai caratteri '???') –
@PanagiotisKanavos In realtà sto usando una query parametrizzata non una query hard coded e sapevo che Nvarchar ha bisogno nessun trattamento speciale Sono d'accordo che molto probabilmente i colpevoli sono i metodi getText e setText e anche il Vettore In cui sto memorizzando i dati – JProgrammer