Xaml에서 한글 입력 시 인코딩 에러

안녕하세요. :smile:

이건 Visual Studio 버그? 같은데요.
가끔 가다가 Xaml에 한글이 포함된 상태로 빌드하면 아래와 같은 에러가 생깁니다.

옛날에도 한번 그랬었는데…
결국 해결하지 못하고 프로젝트를 다시 생성했었습니다.

이번에 또 이 에러가 발생해서 질문드립니다.

혹시 프로젝트를 다시 생성해서 시작하는 것 외에는 방법이 없을까요?

image

<TextBlock Text="한글"/>

(한글이 1자라도 들어가면 문제)

읽어주셔서 감사합니다.

해당 파일의 인코딩 문제로 보입니다.

2개의 좋아요

@dimohy 어떻게 해결해야 할지 모르겠네요. :disappointed_relieved:

이 프로젝트입니다.

1개의 좋아요

@jamesnet214 실행을 해보니 잘 컴파일 되던데요? 어느 지점일까요?

2개의 좋아요

@dimohy Generic.xaml 같은 곳에서 한글을 입력하면 문제가 생겨요!
Text=“한글”, Tag=“한글” 등으로 테스트 해보시면 됩니다.

1개의 좋아요

일단 재현이 됐습니다.

image

캡쳐한 화면의 Value를 보시면 원래 이 값은 테스트인데, 실제로 저장된 값은 UTF-8 인코딩으로 깨진것을 확인하실 수 있습니다. 그래서 오류가 발생한 것이고요, 왜 인코딩이 안맞는지는 좀더 살펴볼께요

2개의 좋아요

일단, 왜 그렇게 되었는지는 모르겠지만, 파일이 UTF-8 with BOM이어야만 Visual Studio 2019에서 UTF-8로 정상 처리가 됩니다. 안그러면 한글이 깨져서 컴파일시 오류가 날 수 있습니다. 오류가 나는 파일을 UTF-8 with BOM (BOM 헤더를 추가해서) 저장하시면 해결 되실 꺼에요.

4개의 좋아요

2개의 좋아요

@dimohy 정말 감사합니다. :smile:

말끔하게 해결됐습니다.

감사합니다!!

1개의 좋아요

만약에 특정 템플릿에서만 파일 인코딩 오류가 나타난다면
아래 링크에서 안내하는 위치의 파일형식을 조사해 보는 것도 좋을 것 같아요.

템플릿 형식에서 문제가 있는 경우는 드물지만 제로는 아니라서요.

5개의 좋아요

테스트중 비슷한 상황이 있어 글을 남깁니다.

Razor Page Project에서 새 Razor Page를 추가한 후 아래 메소드를 클라이언트에서 ajax로 호출해보니 한글이 깨어집니다. Serialize해서 Console로 찍어봤는데 이 역시도 깨어져서 나타납니다.

원인은 Visual Studio 2022 템플릿에 Razor Page 추가시 View 파일은 UTF-8로 생성됩니다만 PageModel 파일만 ANSI 인코딩으로 파일이 생성 됩니다.

해당파일을 UTF-8로 저장하면 정상적으로 한글이 처리됩니다.

public IActionResult OnPost()
{
    var data = new { message = "테스트" };
    return new JsonResult(data);
}
3개의 좋아요

CS 파일에서도 나타나는 오류가 XAML에서도 나타나네요…ㅠㅠ 오늘 버그 접했습니다.

github desktop 화면입니다.

image

위의 사진을 아래와 같이 변경

image

3개의 좋아요

저도 비슷한 일이 있었어요. 비주얼 스튜디오 2022에서…
WPF 공부하다가 XAML 파일에 영문으로만 주석을 달면 괜찮은데 한글이 포함되면 MC3000 에러가 나고 빌드가 안 되더라구요.

비주얼 스튜디오 환경설정을 뒤져서 파일 저장 시 인코딩을 유니코드:(서명 있는)utf-8 로 바꾸게 설정하고 해결했습니다.

2개의 좋아요