2013-07-04 2 views
0

사용자가 자신의 정보를 편집 할 수있는 일부 텍스트 상자가 있습니다.데이터베이스의 문자 인코딩 문제 - 터키어 문자 - Java

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:f="http://xmlns.jcp.org/jsf/core"> 
<h:head> 
    <title>Facelet Title</title> 
</h:head> 
<h:body> 
    <h:form> 
     <h1>Kişisel Bilgileri Değiştir</h1> 
     <h:panelGrid columns="4" > 
      <h:outputText value="Kullanıcı Adı: "></h:outputText> 
      <h:inputText style=" background-color: #DCDAD1; " id="tUserName" readonly="true" value="#{user.customer.username}" /> 
      <h:outputText style="color: red" value="*Kullanıcı adı değiştirilemez" ></h:outputText> 
      <h:outputText></h:outputText> 
      <h:outputText id="tPassword" value="Şifre: "></h:outputText> 
      <h:inputText id="passwordInputText" required="true" 
         requiredMessage="*Şifre bilgisi zorunludur" 
         value="#{user.customer.password}" /> 
      <h:outputText></h:outputText><h:outputText></h:outputText>   
      <h:outputText id="tName" value="Ad: "></h:outputText> 
      <h:inputText id="nameInputText" required="true" 
         requiredMessage="*İsim bilgisi zorunludur" 
         value="#{user.customer.name}" /> 
      <h:outputText></h:outputText> 
      <h:outputText></h:outputText> 
      <h:outputText id="tSurName" value="Soyad: "></h:outputText> 
      <h:inputText id="surnameInputText" required="true" 
         requiredMessage="*Soyad bilgisi zorunludur" 
         value="#{user.customer.surname}" /> 
      <h:outputText></h:outputText><h:outputText></h:outputText> 
      <h:outputText id="tPhone" value="Telefon: "></h:outputText> 
      <h:inputText id="phoneInputText" required="true" 
         requiredMessage="*Telefon bilgisi zorunludur" 
         value="#{user.customer.phone}" /> 
        <!-- validatorMessage="*Örnek:+902123475671"> 
         <f:validateRegex pattern= 
          "\+[0-9]{12}" /> 
      </h:inputText>--> 
      <h:outputText></h:outputText> 
      <h:outputText id="tAddress" value="Adres: "></h:outputText> 
      <h:inputTextarea rows="5" id="addressInputText" value="#{user.customer.address}" /> 
      <h:outputText></h:outputText><h:outputText></h:outputText> 
      <h:outputText id="tEmail" value="E-mail: "></h:outputText> 
      <h:inputText id="emailInputText" required="true" 
         requiredMessage="*E-mail bilgisi zorunludur" 
         value="#{user.customer.email}" 
         validatorMessage="*E-mail formatı yanlış"> 
         <f:validateRegex pattern= 
          "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" /> 
      </h:inputText> 
       <h:outputText></h:outputText><h:outputText></h:outputText> 


       <h:commandButton value="Onayla" action="#{user.editInfo()}"> 
       </h:commandButton> 
     </h:panelGrid> 
    </h:form> 
</h:body> 
</html> 

내가 phpMyAdmin을하고 MySQL을 사용 : 여기에 해당 파일의 코드입니다. 여기 내 테이블 :

enter image description here

하지만 난이 텍스트 상자에 Ö, C, I, G, U, S와 같은 일부 문자를 입력하고 데이터베이스를 업데이트 할 때, 나는 그런 같은 이상한 문자를 얻을? Ä ° ± Å? Ã? çÃ? ¶. 이 문제를 어떻게 해결할 수 있습니까? 나는 utf8_bin 및 utf8turkish_ci를 데이터 정렬으로 시도했지만 작동하지 않습니다. 누구든지 도와 줄 수 있습니까?

감사

편집 : 저는 여기에 새로운 사용자 입력을 내 데이터베이스를 편집 어디는 : UTF-8 문자는 사용자 이름에 사용되는 설정 허용하면서

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package classes; 

import java.io.Serializable; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.context.FacesContext; 

/** 
* 
* @author SUUSER 
*/ 


@ManagedBean(name = "user") 
@SessionScoped 
public class User implements Serializable { 

public static Customer customer; 
private Connection con=null; 
public void setCustomer(Customer customer) { 
    User.customer = customer; 
} 

public Customer getCustomer() { 
    return customer; 
} 

public User() { 
} 

public void editInfo() { 
    String name = customer.getName(), surname = customer.getSurname(), password = customer.getPassword(); 
    String phone = customer.getPhone(), address = customer.getAddress(), email = customer.getEmail(); 


    try { 
     con=DBConnect.connect(); 
     int result = -1; 
     PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
       "UPDATE users set password=?,name=?,surname=?,phone=?,address=?," 
       + "email=? where username=?"); 
     checkDB.setString(7, customer.getUsername()); 
     checkDB.setString(1, password); 
     checkDB.setString(2, name); 
     checkDB.setString(3, surname); 
     checkDB.setString(4, phone); 
     checkDB.setString(5, address); 
     checkDB.setString(6, email); 
     result = checkDB.executeUpdate(); 
     con.close(); 
     FacesContext.getCurrentInstance().getExternalContext().redirect("editsuccesfull.xhtml"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 
} 
+0

또한'UTF-8' – BackSlash

+0

당신은 자바 클래스 또는 관리 빈을 의미하는 사용자 데이터를 수신 페이지의 문자 인코딩을 설정해야? @BackSlash – yrazlik

+0

제 말은 서버에서 사용자 데이터를 읽을 때 'UTF-8'을 사용하여 읽도록 지시해야한다는 것입니다. 새로운 데이터로 mysql 테이블을 업데이트하는 코드를 게시 할 수 있습니까? – BackSlash

답변

-1

는 사실 비슷한 문제가 있었다.

첫 번째 단계, 양식 코드에 추가

accept-charset="utf-8" 

수락 = 캐릭터 세트 양식 속성에

두 번째 단계에서,

header("Content-type: text/html; charset=utf-8"); 

이제 PHP 헤더를 추가하는 것입니다 헤더를 다시 추가해야하는 php 파일 처리 중

header("Content-type: text/html; charset=utf-8"); 
(210)

이제 데이터베이스 정보를 선택하기 전에이 UTF8입니다 ..

mysql_set_charset('utf8'); 

거기에서 일을해야 사용, 그래서 당신은 터키어와 같은 문자의 하위 세트로 변경하고자하는 경우에는, 터키 인코딩을 입력합니다 ..

편집 : 이것은 PHP, HTML 형식입니다. 따라서 ASP.NET의 올바른 방향으로 안내 할 수 있기를 바랍니다.

-1

문자 변환을 위해 Base64를 시도해야합니다. 정말 효과적입니다. 파일에 글자를 쓰는 데 문제가 발생했습니다. 일부 기호가 사라지거나 변경되었습니다. Base64 변환기를 사용할 때이 문제가 해결되었습니다. 확인 Base64

변환을위한 예제 코드;

public String encode64(String resultText) { 
     String encodeText= Base64.encodeBytes(resultText.getBytes());  //convert base64 
     return encodeText; 
    } 


public byte[] decode64(String text) { 
     byte[] decodeText= Base64.decode(text);   //deconvert base64 
     return decodeText;        
    }