코틀린으로 csv 파일을 읽으려고 하는데, 글자가 깨짐니다.

조회수 308회

코틀린을 통해서 외부저장소에 저장된 csv 파일을 읽으려고 합니다. text 파일을 성공했는데, csv 파일은 그램과 같이 글자가 깨지네요, 안드로이드 스튜디오 인코딩 세팅을 utf-8로 변경해도 변화가 없습니다. 어떻게 해야 할까요?

https://drive.google.com/file/d/1cGt6GZxj3ceykQIj5J-tw79trBP8AlNy/view?usp=sharing https://drive.google.com/file/d/1BZk1tePw5k_y9Oo3wNx_mMB9hDRCURlr/view?usp=sharing (사진이 업로드가 안 되어서 불가피하게 구글드라이브 이미지로 올립니다)

코틀린 파일

class GetTxtActivity : AppCompatActivity() {

    private val vBinding by lazy {ActivityGetTxtBinding.inflate(layoutInflater)}
    val getCsvCode:Int = 1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(vBinding.root)

        vBinding.getCellBtn.setOnClickListener{
            val downUri = Uri.parse("")
            openCsvFile(downUri)
        }
    }

    private fun openCsvFile(pickerInitialUri: Uri){
        val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
            addCategory(Intent.CATEGORY_OPENABLE)
            type = "text/csv/dnf/*"
            putExtra(DocumentsContract.EXTRA_INITIAL_URI, pickerInitialUri)
        }
        startActivityForResult(intent, getCsvCode)
    } //openCsvFile 끝

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, requestCode, data)
        if(requestCode == getCsvCode && resultCode == Activity.RESULT_OK){
            data?.data?.also { uri ->
                val inp = getContentResolver().openInputStream(uri)
                inp?.bufferedReader()?.useLines { lines->
                    for(item in lines){
                        Log.d("test", item)
                    }
                }

            }
        }
    } //onActivityResult 끝

} // GetTxt 끝

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기
    1. 안드로이드 스튜디오의 인코딩 세팅은 소스파일에 관한 세팅일 뿐이지, 빌드된 이후 동작과는 상관이 없습니다.
    2. 캡쳐를 보면, cp949(euc-kr) 문자집합으로 인코딩된 내용을 utf-8 로 해석하려 했을 때의 패턴으로 보입니다.
    • 답변 감사합니다. csv 파일이 cp949로 인코딩 되어있다는 말씀이신가요? 조영민 2022.9.29 14:31
    • 메모장으로 열어서 인코딩 변경하니가 정상 출력되네요. 친절한 답변 감사합니다. 조영민 2022.9.29 14:38

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

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

(ಠ_ಠ)
(ಠ‿ಠ)