이 경우에는 내 사례처럼 보이지 않습니다. 오늘 클립 보드에서 데이터를 복사하려고했지만 몇 가지 유니 코드 문자가있었습니다. 내가 얻은 데이터는 Windows-1250 인코딩의 UTF-8 인코딩 파일 (내 Windows의 로컬 인코딩)을 읽는 것과 같습니다.
같은 경우가 있습니다. 당신이 HTML 데이터 를 저장하면 윈도우 1252 에 (다음은 문자가 아닌 표준 공간 후 비 부서지기 쉬운 공간 = 0xa0을 넣어 기억) (또는 Windows-1250, 두 작품)을. 그런 다음 UTF-8 파일로이 파일을 열고 당신이 있어야 무엇을 볼 수 있습니다.
다른 프로젝트에서는 손상된 인코딩으로 데이터를 수정하는 기능을 만들었습니다.
이때
에게 간단한 변환이 충분해야
byte[] data = Encoding.Default.GetBytes(text);
text = Encoding.UTF8.GetString(data);
내 본래의 기능을 좀 더 복잡한 데이터가 손상되지 않도록 검사를 포함 ...
public static bool FixMisencodedUTF8(ref string text, Encoding encoding)
{
if (string.IsNullOrEmpty(text))
return false;
byte[] data = encoding.GetBytes(text);
// there should not be any character outside source encoding
string newStr = encoding.GetString(data);
if (!string.Equals(text, newStr)) // if there is any character "outside"
return false; // leave, the input is in a different encoding
if (IsValidUtf8(data) == 0) // test data to be valid UTF-8 byte sequence
return false; // if not, can not convert to UTF-8
text = Encoding.UTF8.GetString(data);
return true;
}
I 이 최고의 (또는 올바른 솔루션)하지하지만 난 어떻게 입력을 해결하는 다른 방법을 발견하지 않았다는 것을 알고 ...
편집은 Microsoft가 이미 오류를 발견처럼 (2017 년 7 월 20)
보인다 지금은 제대로 작동합니다. 문제가 일부 프레임 워크에 있는지 여부는 확실하지 않지만, 이제는 애플리케이션이 시간이 갈 때와 다른 프레임 워크를 사용한다는 것을 알았습니다. 대답을 썼습니다. 는 (지금은 4.5이며, 이전 버전은 2.0이었다)
(. 이제 내 모든 코드가 데이터를 구문 분석에 실패 수정 이미 aplied와 수정없이 응용 프로그램의 올바른 동작을 결정하는 또 다른 문제가 있습니다.)