2012-08-01 13 views
13

मुझे अपने मॉडल ऑब्जेक्ट्स को जारी रखते हुए यूटीएफ -8 एन्कोडिंग समस्या का सामना करना पड़ रहा है। तुर्की में ı 'एक पत्र है। इसके अलावा कुछ अन्य तुर्की वर्ण भी हैं जो यूटीएफ -8 एन्कोडिंग में शामिल हैं। जबकि मैं अपने मॉडल ऑब्जेक्ट्स को जारी रखता हूं, सभी 'ı' वर्ण के रूप में बने रहे हैं? 'डीबी से। मैं उबंटू लिनक्स 64-बिट ओएस पर MySQL 5.5 का उपयोग कर रहा हूं। इसके अलावा मैंने पहले ही यूटीएफ -8 को हाइबरनेट & सी 3 पी 0 कनेक्शन एन्कोडिंग प्रॉपर्टी सेट कर दी है। जब मैं डीबग करता हूं, तो डेटा क्लाइंट से आता है।हाइबरनेट एन्कोड्स गलत वस्तुओं के दौरान गलत होता है [यूटीएफ -8]

यहां मेरी कॉन्फ़िगरेशन है और अगर कोई मेरी मदद कर सकता है तो मैं बहुत खुश रहूंगा।

अग्रिम धन्यवाद।


स्प्रिंग & हाइबरनेट कॉन्फ़िग

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource"><ref local="dataSource"/></property> 
     <property name="packagesToScan" value="com.tk.dms.model" /> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.use_sql_comments">true</prop> 
       <prop key="hibernate.format_sql">false</prop> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
       <prop key="hibernate.generate_statistics">true</prop> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> 
       <prop key="hibernate.connection.characterEncoding">UTF-8</prop> 
       <prop key="hibernate.connection.useUnicode">true</prop> 
       <!-- c3p0 properties --> 
       <prop key="hibernate.c3p0.min_size">2</prop> 
       <prop key="hibernate.c3p0.max_size">50</prop> 
       <prop key="hibernate.c3p0.maxPoolSize">50</prop> 
       <prop key="hibernate.c3p0.minPoolSize">2</prop> 
       <prop key="hibernate.c3p0.initialPoolSize">2</prop> 
       <prop key="hibernate.c3p0.timeout">300</prop> 
       <prop key="hibernate.c3p0.max_statements">50</prop>     
      </props> 
     </property> 
    </bean> 

उत्तर

31

सेटिंग का प्रयास करने का अनुरोध करें डेटा स्रोत में एन्कोडिंग

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName"> 
     <value>com.mysql.jdbc.Driver</value> 
    </property> 
    <property name="url"> 
     <value>jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=UTF-8</value> 
    </property> 
    <property name="username"> 
     <value>?</value> 
    </property> 
</bean> 

इसके अलावा, आप यह सुनिश्चित करें कि रूपों से इनपुट ठीक से एन्कोड किया गया है कर रहे हैं? क्या आप अपने वसंत आवेदन में फ़िल्टर का उपयोग करते हैं? डीबग मोड में एप्लिकेशन चलाएं और जारी रखने से पहले अपने मॉडल ऑब्जेक्ट के फ़ील्ड को चेक करें।

फिल्टर अपने web.xml फ़ाइल में beplaced चाहिए:

<filter> 
    <filter-name>SetCharacterEncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>SetCharacterEncodingFilter</filter-name> 
    <url-pattern>*</url-pattern> 
</filter-mapping> 
+1

बहुत हलवाब धन्यवाद, यूआरएल हल समस्या के लिए charachter एन्कोडिंग जोड़ना .. – talha06

+0

सभी हाइबरनेट और MySQL विन्यास की कोशिश करने के बाद, फ़िल्टर दृष्टिकोण काम किया। धन्यवाद! –

+2

आपने मेरा दिन बचाया ... एक आकर्षण की तरह काम करता है ... – Babu

0

चेक अपने सेम में संग्रहीत डेटा क्या है। आपका बीन कैसे आबादी वाला है ?, क्या यह उपयोगकर्ता इनपुट के माध्यम से है ?, यदि हां, तो आपको उस पृष्ठ में यूटीएफ -8 के रूप में एन्कोडिंग लिखनी होगी और यूटीएफ -8

+0

मेरे पास इसके लिए एक फ़िल्टर है, दुर्भाग्यवश यह इस त्रुटि को हल नहीं किया है .. – talha06

1

आप

characterEncoding = UTF-8

पैरामीटर कनेक्शन स्ट्रिंग को जोड़ा गया है? नतीजतन (डीबी और टेबल के बाद पहले ही बनाया जा चुका है), आपको अपने डेटाबेस को फिर से बनाना होगा। असल में मेरे मामले में मैंने अपने डीबी को फिर से बनाया:

डेटाबेस बनाएं डीबीएक्स चरित्र सेट utf8 COLLATE utf8_general_ci;

या

बदलने डेटाबेस my_database डिफ़ॉल्ट चारसेट UTF8 कोलेट utf8_general_ci;

ध्यान दें कि मैं साइरिलिक तारों का उपयोग कर रहा था।