数据库中的字符编码问题-土耳其字符-Java

数据库中的字符编码问题-土耳其字符-Java,java,database,jakarta-ee,utf-8,utf,Java,Database,Jakarta Ee,Utf 8,Utf,我有一些文本框在我的网页上,用户可以编辑他的信息。以下是该文件的代码: <?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/199

我有一些文本框在我的网页上,用户可以编辑他的信息。以下是该文件的代码:

<?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>

实际上,我在允许用户名使用UTF-8字符集时遇到了类似的问题

第一步,在表单代码中添加:

accept-charset="utf-8"
进入accept=charset表单属性

第二步是添加一个php头

header("Content-type: text/html; charset=utf-8");
现在,在处理php文件时,需要再次添加头

header("Content-type: text/html; charset=utf-8");
现在在选择数据库信息使用之前

mysql_set_charset('utf8');
我们应该从那里开始工作。。这是UTF8,因此如果要将其更改为较低的字符集(如土耳其语),请输入土耳其语编码


编辑:这是用PHP、HTML编写的。因此,希望它能为您指引ASP.NET的正确方向。

您应该尝试使用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;                               
    } 

您还必须将接收用户数据的页面的字符编码设置为
UTF-8
您是指java类还是托管bean@反斜杠我的意思是,当您从服务器读取用户数据时,您必须告诉它使用
UTF-8
读取。你能发布用新数据更新mysql表的代码吗?@BackSlash我编辑了这个问题,并添加了更新数据库的部分,因为editinfo()函数可能以错误的编码发送数据。通过在写入数据库之前记录接收到的数据或使用Wireshark,您可以轻松地进行检查。JDBC连接可能使用错误的编码,或者mysql服务器可能强制执行错误的编码。
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;                               
    }