2012-11-18 3 views
1

asp.net 페이지에서 mysql5.5로 아랍어 콘텐츠를 삽입하고 싶습니다. mysqlconnector5.2.7을 사용하여 로컬 mysqlserver.when에 연결하여 ASP에서 아랍어를 삽입하려고했습니다. .net 프로그램, null 값이 데이터베이스에도 삽입되었는데 명령 프롬프트에서 삽입하려고 시도했을 때 모든 단어가 ???처럼 표시됩니다. Google에서 더 많이 검색했지만 해결책을 찾지 못했습니다. 제 참조 코드 below.I는 데이터베이스, 테이블 및 명령 프롬프트에서 ALTER 쿼리를 사용하여 UTF8로 아랍어의 열을 변경,하지만 여전히 내가있는 DataGridView에이 아랍어를 표시하는 방법, 어떤 해결책을 찾을 수 없습니다asp.net에서 아랍어를 삽입하는 방법 C#

myconnection.Open(); 
string insert="insert into home_table(image,content,arabiccontent) values(@image,@content,arabiccontent)"; 
MySqlCommand cmd = new MySqlCommand(insert,myconnection); 
MySqlParameter param = new MySqlParameter("@image", MySqlDbType.VarBinary, image.Length); 
param.Value = image; 
cmd.Parameters.Add(param); 

cmd.Parameters.Add(new MySqlParameter("@content",MySqlDbType.VarChar,Content.Length)); 

cmd.Parameters["@content"].Value = Content; 
cmd.Parameters.Add(new MySqlParameter("@arabiccontent", MySqlDbType.VarChar, contentarabic.Length)); 
cmd.Parameters["@arabiccontent"].Value = contentarabic.Trim(); 
cmd.ExecuteNonQuery(); 
myconnection.Close(); 

의 Web.config

<add name="mysqlconnectionstring" connectionString="Data Source=localhost;Database=mydatabase_;Uid=root;Pwd=root;CharSet=cp1256;"/> 

답변

0

가장 좋은 방법은 텍스트를 기본 64 자로 변환 한 다음 데이터베이스에 저장하는 것입니다. 그리고 데이터베이스에서 가져 오는 동안 변환을 사용합니다. 당신이 인코딩 문제를 가지고있는 것처럼

byte[] byt = System.Text.Encoding.UTF8.GetBytes(strOriginal); 
// convert the byte array to a Base64 string 
strModified = Convert.ToBase64String(byt); 

다시 정상 문자열이

byte[] b = Convert.FromBase64String(strModified); 
strOriginal = System.Text.Encoding.UTF8.GetString(b); 
+0

당신이 말해 줄 수 문제를 해결하기 위해 그것을 사용? – suhail

+0

감사합니다. .. 문제가 해결되었습니다. – suhail

+0

항상 환영합니다 :) –

1

으로는 소리. 보드 전체에서 UTF8 인코딩을 사용하고 있는지 확인하십시오. MySQL의 경우 테이블이 UTF8이고 latin1 또는 다른 인코딩이 아님을 확인해야합니다. 또한 MySQL에 대한 연결이 UTF8인지 확인하십시오. 나는 ASP/C#에서 그렇게하는 방법을 잘 모르겠다. 그러나 보통 당신이 연결 한 후에 "쿼리"SET UAM8을 실행할 수 있으며, 일을 똑바로 세울 것이다.

명령 줄/프롬프트에서 해당 쿼리를 수행하면 ??? 표시가 중단됩니다. 데이터베이스에 이미 잘못 저장된 데이터는 변환되지 않으므로 기존 데이터가 올바르게 표시되거나 표시되지 않을 수 있습니다.

2

사용이 연결 문자열

Datasource=localhost; Database=testdb; Uid=root; Pwd=123;CHARSET=utf8 

그리고 그것은 CHARSET 확실하게하지 CharSet는 나 캐릭터 세트! 또한 테이블과 필드의 DEFAULT CHARACTER SET을 변경하려고 :

ALTER TABLE `myTbl` DEFAULT CHARACTER SET utf8 
2

내가 같은 문제에 직면했다.

내가 내 webconfig에서 charset =의 UTF8을 간단하게 추가하고 문제가 문제

<connectionStrings> 
    <add name="ConnectionString" connectionString="Server=192.168.1.4;Database=downtodate;Uid=root;CHARSET=utf8"/> 
    </connectionStrings> 
0

를 해결, 예 데이터베이스 문자 세트는 UTF8이지만, 응용 프로그램이 그것을 알고하지 않습니다. 그것은 당신의 charset을 cp1256으로 생각합니다.

<add name="mysqlconnectionstring" connectionString="Data Source=localhost;Database=mydatabase_;Uid=root;Pwd=root;CharSet=cp1256;"/> 

신고해야합니다. 몇 가지 해결책이 있지만 가장 쉬운 해결책은 연결 문자열을 추가하는 것입니다. charset = utf8;

내가 그것을 위해 코드를 작성하는 방법을

<add name="mysqlconnectionstring" connectionString="Data Source=localhost;Database=mydatabase_;Uid=root;Pwd=root;CHARSET=utf8;"/> 
관련 문제