Apakah mungkin meneruskan karakter hindi ke mysql db tanpa mengonversi ke Unicode?

Seperti pertanyaan saya, apakah mungkin untuk menyimpan karakter hindi langsung ke database tanpa menyandikannya. Misalnya saya memiliki kata ini, saya mengetik di bidang teks saya di halaman jsp त५. Saya perlu menyimpan nama di database mysql.

Alasan saya menanyakan hal ini adalah saya mencoba menyandikannya menggunakan UTF-8 dan bahkan di tabel, saya membuat ini

CREATE TABLE `hindi` (
    `data` varchar(200) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Tapi itu memberi saya त५ yang ketika saya ambil kembali di textarea adalah karakter hindi yang tepat. Ini tidak masalah. Tapi masalahnya dimulai ketika saya mengambilnya dari db ke pdf saya baru saja mendapatkan त५

Tolong beri tahu saya apa yang harus saya lakukan? charset dan pengkodean keduanya utf-8

PEMBARUAN: Kode yang menghasilkan pdf

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <%@ page trimDirectiveWhitespaces="true" %>
   <%@ page import="javax.servlet.http.*,javax.servlet.*,com.lowagie.text.Document,com.lowagie.text.DocumentException,com.lowagie.text.Paragraph" %>
   <%@page import="java.io.*,java.text.SimpleDateFormat,com.lowagie.text.pdf.BaseFont,com.lowagie.text.pdf.PdfContentByte,com.lowagie.text.pdf.PdfTemplate"%>
   <%@page import="java.sql.*,java.nio.charset.Charset,com.lowagie.text.pdf.PdfWriter,java.awt.Graphics2D"%>
   <%@ page import="java.util.List,java.util.Arrays,java.util.Collections,java.util.*,com.itextpdf.text.pdf.*,com.itextpdf.tool.xml.ElementList,com.itextpdf.text.Rectangle,com.itextpdf.text.Element,com.itextpdf.text.*,com.itextpdf.text.Font,java.awt.Color,com.itextpdf.text.Font.FontFamily,java.util.Date,java.text.*,com.itextpdf.tool.xml.XMLWorkerHelper" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<% 

List arrlist = new ArrayList();
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/a", "root", "root");
Statement st=con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs;
st.executeQuery("SET NAMES UTF8");
rs=st.executeQuery("SELECT * FROM hindi");

while(rs.next()){
arrlist.add(rs.getString("data"));
}  
System.out.println(arrlist);
// step 1: creation of a document-object
Document document = new Document();
        try {
            // step 2:
            // we create a writer
            PdfWriter writer = PdfWriter.getInstance(
            // that listens to the document
                    document,
                    // and directs a PDF-stream to a file
                    new FileOutputStream("C:/Users/hindi.pdf"));
            // step 3: we open the document
            document.open();
            // step 4:
            String text = "&#2361;&#2379;";
            //String arialuniTff = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF");
            //String x=new String(,Charset.forName("UTF-8"));
            BaseFont bf = BaseFont.createFont("c:/windows/fonts/arialuni.ttf",
                    BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            for(int i=0;i<2;i++){
                  String str =(String) arrlist.get(i);
            document.add(new Paragraph(str,
                    new com.lowagie.text.Font(bf, 12)));
            }
            PdfContentByte cb = writer.getDirectContent();
            PdfTemplate tp = cb.createTemplate(100, 50);
            cb.addTemplate(tp, 36, 750);
        } catch (DocumentException de) {
            System.err.println(de.getMessage());
        } catch (IOException ioe) {
            System.err.println(ioe.getMessage());
        }

        // step 5: we close the document
        document.close();


%>
</body>
</html>

person Santino 'Sonny' Corleone    schedule 09.01.2014    source sumber


Jawaban (3)


Dalam string koneksi MySQL Anda, Anda harus menambahkan beberapa konfigurasi tambahan seperti

jdbc:mysql://localhost/unicode?useUnicode=true&characterEncoding=UTF-8

Saya telah membuat kelas koneksi yang dapat membuat koneksi ke MySQL. Lihat tautan yang berisi kelas http://uwudamith.wordpress.com/2011/09/02/how-to-insert-unicode-values-to-mysql-using-java/ . Ini adalah proyek ayunan dan Anda bisa mendapatkan sedikit bantuan dari sana

Coba ubah struktur tabel seperti format di bawah ini

--
-- Database: `unicode`
--
CREATE DATABASE `unicode` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `unicode`;

-- --------------------------------------------------------

-- --------------------------------------------------------

--
-- Table structure for table `unicode`
--

CREATE TABLE IF NOT EXISTS `unicode` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `job` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;
person Damith    schedule 09.01.2014
comment
Ya. Ubah database dan coba. Jika Anda mendapatkan tampilan halaman web yang benar mungkin ada masalah lain saat Anda membuat pdf. - person Damith; 09.01.2014
comment
Pastikan untuk mendapatkan cadangan sebelum mengubahnya - person Damith; 09.01.2014
comment
saya membuat db baru tetapi masih menyimpan &#2340;&#2381;&#2332; di tabel unicode..Saya memasukkan database dari halaman jsp saya - person Santino 'Sonny' Corleone; 09.01.2014
comment
Apakah ada cara untuk menyimpan pengkodean font hindi ke //u2192 pengkodean alih-alih & #2988? - person Santino 'Sonny' Corleone; 09.01.2014

atur karakter set header ke utf-8 sambil membuat PDF (charset=utf-8). Unduhan JSP - application/octet-stream mungkin tautan ini sesuai dengan tujuan Anda. ubah sesuai sesuai kebutuhan Anda.

person Aravind Kishore    schedule 09.01.2014
comment
itu diatur ke charset=utf-8 - person Santino 'Sonny' Corleone; 09.01.2014
comment
coba decode penyewa utf-8 dan kirim ke PDF menggunakan beberapa fungsi decode di jsp - person Aravind Kishore; 09.01.2014
comment
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>. apa itu pageEncoding??. Menurutku itu tidak perlu. - person Aravind Kishore; 09.01.2014
comment
contentType="text/html; charset=UTF-8" ubah menjadi contentType="application/pdf; charset=UTF-8" - person Aravind Kishore; 09.01.2014
comment
yang akan ditampilkan di halaman web. Saya ingin mendownload file. - person Santino 'Sonny' Corleone; 09.01.2014
comment
total elemen html? - person Santino 'Sonny' Corleone; 09.01.2014
comment
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> dan pada akhirnya </body></html> - person Aravind Kishore; 09.01.2014
comment
sudahkah Anda menyetel 'Content-disposition: attachment; filename=filename.pdf' di header - person Aravind Kishore; 09.01.2014
comment
Apakah ada cara untuk menyimpan pengkodean font hindi ke //u2192 pengkodean alih-alih & #2988? - person Santino 'Sonny' Corleone; 09.01.2014

Saat Anda menulis

String text = "&#2361;";

Di Java, string tersebut memiliki 7 karakter. Selalu seperti itu. Anda mungkin bermaksud menulis

String text = String.valueOf((char)2361) + String.valueOf((char)2379);

or

String text = "\u0939\u094B";

Formulir ampersand hanya berfungsi di HTML dan XML, tidak di Java.

person Roland Illig    schedule 09.01.2014