[utf-8] 파일을 open해서 write나 append를 하고 저장을 하면, [ascii] 파일로 인식합니다.

조회수 425회

[utf-8] 파일을 open해서 replace를 하고 저장(w,a)하면, [ascii] 파일로 인식합니다. ascii로 인식되도록 변경되지않고, utf-8로 인식되게 저장하려면 어떻게하나요. 다국어 번역용 파일이라서, ascii로 인식되면 안됩니다.

encoding='UTF-8-SIG' 로 지정해서 저장하면 다행히 UTF-8-SIG로 인식되게 저장이 되는데, encoding='utf-8'로는 안되네요. (ascii로 인식되게 바뀌어서 저장돼요.)

src1 = "’"
tar1 = "'"
        with open(filepath, "r", encoding='utf-8') as file:
            content = file.read()
            content = content.replace(src1, tar1)
        with open(filepath2, "a", encoding='UTF-8') as file:
            file.write(content)

codecs.open / io.open 혹시몰라 해봤는데, 동작에는 변화없습니다.

  • utf8 이 아닌 아스키로 인식한다는 걸 어떤 식으로 확인했나요? nowp 2021.12.30 07:01

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    UTF-8은 알파벳으로만 구성된 내용일 경우 ASCII와 동일한 내용을 갖습니다.

    즉, 알파벳으로만 구성되어 있는 파일을 열었을 때 이게 ASCII인지 UTF-8인지 알 수 있는 방법은 없습니다. 다른 언어의 문자가 들어갈 경우 UTF-8 특유의 패턴을 확인하여 분별은 가능합니다.

    utf-8-sig의 경우 텍스트 파일 가장앞에 BOM(Byte Order Mark)를 추가하여 이게 UTF-8로 작성된 내용이란 것을 표현하기 때문에 말씀하신대로 자동 인식이 가능할 겁니다.

    해당 파일이 ASCII인지 아닌지 판단한 방법이 무엇인지는 잘 알 수 없으나, 한글을 넣어 UTF-8로 작성해 보시고 ASCII로 판단되는지 확인해 보세요.

    • 감사합니다. 안의 내용에따라서 ASCII인지 UTF-8인지 변하는건가보네요. 정원석 2022.1.7 13:27

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)