본문 바로가기

Unity

국가 마다 다른 데이터 파싱 문제

라이브 서비스도중 System.DateTime 뿐만아니라 특정 Float parse에도 특정구가에 표기가 다르다는 사실을 알았다.

(라이브 도중 특정국가에 파싱에만 Firebase Crashlytics에 잡히는걸 확인)  

 

 

datetime 도 태국처럼 시간표기에 문제가 있는데 float parse도 문제가 있을 수 있다. 

 

 

ex) 미국 or 한국 표기 :1,234,567.89 

       러시아 or 브라질 표기 : 1.234.567,89 

 

이처럼 표기법이 다른데 문제는 float.parse를 할때 에러를 발생 시킬 수 있다.

 

해결법은 간단하다. 

float.parse를 할떄  뒤에 cultureinfo invariantculture 를 써주면 된다. 

 

 

float.parse(6.245 ,CultureInfo.InvariantCulture);

 

TryPase일 경우

floa.TryPase(value, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out result);

 

 

도트윈에 파싱코드를 보면 CultureInfo.InvariantCulture가 있다는것을 볼 수 있다.