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개의 좋아요