2014-04-22 9 views
7

के बिना गलत स्ट्रिंग मान मैं अपने डेटाबेस में किसी फ़ील्ड में कुछ टेक्स्ट डालने की कोशिश कर रहा हूं और मुझे इमोजिस के साथ समस्या है। क्या होता है कि यदि मैं अपना कनेक्शन यूआरएल jdbc:mysql://localhost:3306/MyDatabase?characterEncoding=UTF-8 पर सेट नहीं करता हूं तो सर्वर इमोजी को ठीक से स्टोर करेगा, लेकिन गैर-लैटिन वर्णों को प्रश्न चिह्न के रूप में भी स्टोर करेगा।"स्ट्रिंग एन्कोडिंग = यूटीएफ -8"

अब

अगर मैं उस तरह मेरे कनेक्शन url सेट तो सर्वर देता है, इमोजी और इच्छा उत्पादन त्रुटि नहीं लगेगा:

Incorrect string value: '\xF0\x9F\x98\xB1\xF0\x9F...' for column 'fullTweet' at row 1

मैं अपने स्थानीय सर्वर पर UTF8 संगतता के लिए सभी आवश्यक कदम किया है :

  1. मैं my.ini
  2. क्वेरी show variables like 'character_set_server' रिटर्नकरने के लिए लाइन character-set-server=utf8mb4 जोड़ा 0
  3. मैं क्वेरी CREATE DATABASE twitter DEFAULT CHARACTER SET utf8mb4
  4. साथ और अपनी तालिका और मेरी टेबल के क्षेत्रों के सभी डिफ़ॉल्ट रूप से मेरी डाटाबेस बनाने का उपयोग कर रहे utf8mb4_general_ci (के रूप में मैं phpmyadmin में देख सकते हैं)

क्या याद आ रही है? मुझे यकीन है कि मैंने सभी आवश्यक कदम उठाए हैं और मैं अभी भी इसे काम नहीं कर सकता, या तो यह केवल लैटिन वर्णों को स्टोर करेगा या यह इमोजी स्टोर नहीं करेगा।


मेरा एक पिछले प्रश्न से अतिरिक्त जानकारी:

मैं मैन्युअल रूप से डेटाबेस में इमोजी प्रवेश कर सकते हैं और वे वास्तव में दिखाने के रूप में वे डिबगर में दिखाई दे (बक्से के रूप में)। मैं इस क्वेरी चलाने:

INSERT INTO `tweets`(`id`, `createdAt`, `screenName`, `fullTweet`, `editedTweet`) VALUES (450,"1994-12-19","john",_utf8mb4 x'F09F98B1',_utf8mb4 x'F09F98B1') 

और इस तालिका में पंक्ति दिखता है की तरह है:

1

उत्तर

0

इस प्रयास करें ->

convert('string' using utf8) 

या

convert('string',char) 

या

convert('string' using latin1) 

या जो भी वर्ण एन्कोडिंग है वह आपने तालिका में सेट किया है। मैंने जो कोड प्रदान किया है वह mysql फ़ंक्शन हैं।

+0

मुझे ऐसा कोई फ़ंक्शन नहीं मिल रहा है, उन्हें पहचाना नहीं जा रहा है। –

1

यह How to support full Unicode in MySQL databases · Mathias Bynens असल में विस्तार से समझाया गया है, मुझे तुम्हारी याद आ यह (Step 5 से)

[client] 
default-character-set = utf8mb4 

[mysql] 
default-character-set = utf8mb4 

[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 

उसके बाद, आप अपने URL से characterEncoding=UTF-8 निकाल देना चाहिए लगता है। यह भी जांचें कि आपके पास MySQL कनेक्टर/जे 5.1.13+ है (JDBC url for MySQL configuration to use utf8 character encoding देखें)

संबंधित मुद्दे