강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

cjswogmlen님의 프로필 이미지
cjswogmlen

작성한 질문수

유니티 mysql 한글 데이터 입력에 관한 질문입니다.

작성

·

578

·

수정됨

0

안녕하세요 급하게 유니티를 사용하게 된 초보자입니다.

다름이아니라

using System.Data;

using MySql.Data;

using MySql.Data.MySqlClient;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using System;

public class DBConnect : MonoBehaviour

{

MySqlConnection sqlconn = null;

MySqlTransaction transaction = null;

MySqlDataAdapter adapter = null;

string 서버주소, db명, 유저명, 비밀번호, 포트;

void sqlConnect()

{

//DB정보 입력

string sqlDatabase = "Server=" + sqlDBip + ";Database=" + sqlDBname + ";UserId=" + sqlDBid + ";Password=" + sqlDBpw + ";Port="+port +"";

try

{

sqlconn = new MySqlConnection(sqlDatabase);

sqlconn.Open();

Debug.Log("SQL의 접속 상태 : " + sqlconn.State); //접속이 되면 OPEN이라고 나타남

}

catch (Exception msg)

{

Debug.Log(msg); //기타다른오류가 나타나면 오류에 대한 내용이 나타남

}

}

void sqldisConnect()

{

sqlconn.Close();

Debug.Log("SQL의 접속 상태 : " + sqlconn.State); //접속이 끊기면 Close가 나타남

}

public void sqlcmdall(string allcmd) //함수를 불러올때 명령어에 대한 String을 인자로 받아옴

{

sqlConnect(); //접속

using (transaction = sqlconn.BeginTransaction())

{

try

{

using(MySqlCommand dbcmd = new MySqlCommand(allcmd, sqlconn))

{

dbcmd.Transaction = transaction;

dbcmd.ExecuteNonQuery();

}

transaction.Commit();

}

catch(Exception e)

{

transaction.Rollback();

Debug.LogError("Transaction failed: " + e.Message);

}

}

 

sqldisConnect();

}

public DataTable selsql(string sqlcmd) //리턴 형식을 DataTable로 선언함

{

DataTable dt = new DataTable(); //데이터 테이블을 선언함

sqlConnect();

MySqlCommand dbcmd = new MySqlCommand(sqlcmd, sqlconn);

using (MySqlDataReader reader = dbcmd.ExecuteReader())

{

dt.Load(reader);

}

sqldisConnect();

return dt; //데이터 테이블을 리턴함

}

}

 

위 코드는 제가 mysql을 이용해서 rds 서버에 연결한 스크립트입니다.

밑에 데이터삽입및수정, 데이터조회 메소드도 만들었죠

그런데 문제가 생겼습니다.

유니티 UI로 데이터 삽입을 하는데 한글 데이터가 db에 삽입은 되는데 데이터 삽입하자마자 바로 UI 통해서 조회하려고 하면 데이터테이블에 담기지 않을 뿐더러, 다른 기존 데이터들도 같이 담기지 않습니다. 그래서 프로젝트를 껐다 키고 조회를 하면 됩니다.

영어로 된 데이터들은 삽입하자마자 바로 데이터테이블에 잘 담겨서 조회가 되는데 한글만 안되네요.

에디터 버전은 2021.2.0f1입니다. db의 character set은 전부 utf8입니다.(혹시 바꿔야할까요 ) 한글 데이터 삽입은 db에는 바로 잘 들어갑니다.

답변 1

0

안녕하세요, 인프런 AI 인턴이에요. 유니티에서 Mysql과 한글 데이터 입력 관련 질문이시군요.

유니티에서 Mysql과 한글 데이터를 입력하는 것은 일반적으로 문제가 되지 않습니다. 하지만 몇 가지 주의할 점이 있습니다.

  1. 데이터베이스 인코딩 설정: 데이터베이스의 인코딩이 UTF-8로 설정되어 있는지 확인해야 합니다. 한글 데이터를 정상적으로 저장하기 위해서는 데이터베이스의 인코딩 설정이 UTF-8로 되어 있어야 합니다.

  2. 테이블 및 컬럼 인코딩 설정: 데이터베이스의 테이블 및 컬럼도 UTF-8로 설정되어 있는지 확인해야 합니다. 테이블 및 컬럼의 인코딩이 다른 경우 한글 데이터 입력이 정상적으로 이루어지지 않을 수 있습니다.

  3. 유니티 코드에서 한글 데이터 다루기: 유니티에서 Mysql 데이터베이스에 한글 데이터를 입력할 때는 주의해야 합니다. 위의 코드에서는 커넥션 문자열을 직접 생성하고 있습니다. 이때 문자열에 한글이 포함될 경우 인코딩 관련 문제가 발생할 수 있습니다.

커넥션 문자열 생성 시 Encoding.Default.GetString() 메소드를 사용하여 한글을 UTF-8로 변환하여 입력해보세요. 예를 들면, Encoding.Default.GetString(sqlDBip)와 같이 사용하시면 됩니다.

또한, 실제 데이터 입력 시에도 MySqlCommand 객체의 Parameters를 사용하여 값을 입력하는 것이 좋습니다. 이렇게 하면 인코딩 문제를 신경쓰지 않고 데이터를 안전하게 입력할 수 있습니다.

이런식으로 코드를 수정하고, 인코딩 관련 설정을 확인해보세요. 문제가 계속되면 구체적인 오류 메시지와 함께 다시 문의해주세요.
요청하신 답변에 대해 추가적인 도움이 필요하시면 언제든지 물어보세요!

cjswogmlen님의 프로필 이미지
cjswogmlen

작성한 질문수

질문하기