का उपयोग कर MySQL में यूटीएफ -8 सामग्री को स्टोर नहीं कर सकता है कुछ अजीब कारणों से मैं अपने MySQL डेटाबेस में यूटीएफ -8 डेटा जोड़ नहीं सकता। जब मैं एक गैर-लैटिन चरित्र दर्ज करता हूं, तो इसे ????? के रूप में संग्रहीत किया जाता है। बाकी सब कुछ ठीक से संग्रहीत किया जाता है। तो उदाहरण के लिए, "यह एक उदाहरण® ™ है" ठीक से संग्रहीत है, लेकिन "和 英 辞典" को "????" के रूप में संग्रहीत किया जाता है।जावा प्रीपेडस्टेटमेंट
कनेक्शन यूआरएल ठीक है:
private DataSource getDB() throws PropertyVetoException {
ComboPooledDataSource db = new ComboPooledDataSource();
db.setDriverClass("com.mysql.jdbc.Driver");
db.setJdbcUrl("jdbc:mysql://domain.com:3306/db?useUnicode=true&characterEncoding=UTF-8");
db.setUser("...");
db.setPassword("...");
return db;
}
मैं PreparedStatement उपयोग कर रहा हूँ के रूप में आप उम्मीद करेंगे, मैं भी प्रवेश करने "के नाम UTF8 सेट" के रूप में कोई सुझाव की कोशिश की।
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = db.getConnection();
stmt = conn.prepareStatement("set names utf8");
stmt.execute();
stmt = conn.prepareStatement("set character set utf8");
stmt.execute();
... set title...
stmt = conn.prepareStatement("INSERT INTO Table (title) VALUES (?)");
stmt.setString(1,title);
stmt.execute();
} catch (final SQLException e) {
...
तालिका स्वयं ठीक दिखती है।
Default Character Set: utf8
Default Collation: utf8_general_ci
...
Field title:
Type text
Character Set: utf8
Collation: utf8_unicode_ci
मैं यूनिकोड में प्रवेश करने से इसका परीक्षण किया ("和 英 辞典" विशेष रूप से) एक जीयूआई संपादक के माध्यम से और फिर मेज से चयन - और यह ठीक वापस आ गया था। तो यह जेडीबीसी के साथ एक मुद्दा प्रतीत होता है।
मुझे क्या याद आ रही है?
क्या आप वाकई 'शीर्षक' की सही सामग्री रखते हैं? हो सकता है कि आप इसे आईएसओ-जो भी इस्तेमाल करते हुए फाइल से पढ़ लें? –
हां, जब मैं शीर्षक पर ब्रेकपॉइंट डालता हूं तो मैं देख सकता हूं कि यह वास्तव में यूनिकोड है (उदा: और 英 辞典) और नहीं ???? – nostromo
'utf8' एक स्ट्रिंग है, इसलिए इसे उद्धरणों में संलग्न करें: '' नाम सेट करें 'utf8' ''। चरित्र सेट के साथ गड़बड़ मत करो। –