카페인 IV가 너무 낮아서 내 마음이 흐려지고 간단한 인코딩 문제라고 생각하는 솔루션을 찾는 데 문제가 있습니다 (경험이 거의 없습니다.) 와).잘못된 인코딩으로 인해 DB 쿼리에 문제가 발생했습니다.
EF6 코드를 사용하는 DB가 있습니다. 코드 블럭 내에 포함 된 웹 사이트 포럼의 일부 텍스트를 복사 할 때까지 모든 것이 잘 작동하는 것 같습니다. 난 헤더를 확인하고 아마 UTF - 8로 인코딩 된거야.
본질적으로이 텍스트를 가져 와서 문자열 배열로 분할하고 각 줄의 문자열과 일치하는 레코드를 DB에서 확인하십시오. 내가 SQLMS에 가서 LIKE '% Magnetic %'와 같은 테이블을 질의했을 때, 내 DB 테이블의 어떤 것과도 일치하지 않는 "Magnition"문자열로 문제가 발생할 때까지 모든 것이 잘 진행되고있었습니다. 결과가 있습니다.
은 내가 DB 쿼리의 텍스트와 ++ 메모장에 웹 사이트에서 텍스트를 삭제하고 동일 보이는 것을보고 그런 다음Magnеtic
Magnеtic
, 나는 ANSI로 인코딩을 변경하고 그것을 보여 주었다 :
Magnetic <--From DB
Magnеtic <--From website
작은 전구가 머리 위로 들어 왔지만이 문제를 해결하려는 시도가 실패했습니다.
나는 다양한 방법을 사용하여 시도했지만 나는 그것이 잘못된 도구를 사용하여 문제를 공격하는 내 튀김 뇌 생각 :
string.compare(a, b) == 0
string.equals(a, b)
string.ToUpperInvariant()
내가 기억할 수없는 아마 몇 사람을.
이제 내 문제는 무엇인지 알 수 있습니다.이 문제는 해결할 수있는 간단한 문제라고 생각하지만, 내가 말했듯이, 나는 튀김에 시달리고 일부 지역 사회의 도움이 필요합니다.
저는 전문 코더가 아니기 때문에 아마추어가 아니므로 모범 사례 나 고급 기술을 사용하지 않을 수도 있습니다.
편집 : 오늘 나는 좀 더 검색을하고 작동하지 않는 몇 가지 방법을 발견했습니다.
private string RemoveAccent(string txt)
{
byte[] bytes = Encoding.GetEncoding("Cyrillic").GetBytes(txt);
return Encoding.ASCII.GetString(bytes);
}
이 문자는 키릴 문자 인코딩의 악센트 부호가있는 문자를 제거하는 것으로 보입니다. 결과는 예상대로 아니었지만 효과가있었습니다. 결과 : 나는 또한 시도
Magn?tic <- Computer interpretation
Magnetic <- Visual representation
는 :
private string RemoveAccent2(string txt)
{
char[] toReplace = "àèìòùÀÈÌÒÙ äëïöüÄËÏÖÜ âêîôûÂÊÎÔÛ áéíóúÁÉÍÓÚðÐýÝ ãñõÃÑÕšŠžŽçÇåÅøØ".ToCharArray();
char[] replaceChars = "aeiouAEIOU aeiouAEIOU aeiouAEIOU aeiouAEIOUdDyY anoANOsSzZcCaAoO".ToCharArray();
for (int i = 0; i < toReplace.Count(); i++)
{
txt = txt.Replace(toReplace[i], replaceChars[i]);
}
return txt;
}
이 방법은 모든 변경 사항을 제공하지 않았다.
회신 해 주셔서 감사합니다. @svick.따라서 두 개의 시각적으로 동일한 문자열을 얻는다면 컴퓨터가 서로 다른 것으로 해석합니다. 컴퓨터에서 해석하는 것보다 _ 시각적으로 보이는 것을 비교할 수 있도록 모든 텍스트를 표준화 할 수 있습니까? – Josh
@Josh 나는 다른 글꼴이 다르게 행동 할 수 있기 때문에 그렇게 생각하지 않는다. – svick