2012-07-13 1 views
1
진수

에서 지역 대회를 제거 <Curr id="2" amnt="100000000.00"/>를 반환하고 다시 같은 번호로 직렬화 ...하지만 우리는 SK-SK 또는 CS-CZ에서 할 때 직렬화에 * 100 반환 <Curr id="2" amnt="100000000,00"/>을 반환 XmlSerializer를 EN-US는, (쉼표를 무시)우리가 같은 분석 통화는 지역 형식으로 설정되어 우리가 지역 관련 웹 클라이언트를 가지고

이 지역을 십진수에서 제거하거나 불변으로 만들 가능성이 있습니까? (지역화를 처리하기 위해 문자열로 변환하고 다시 구문 분석하지 않으려는 경우)

+1

어디서나 같은 문화권을 사용하여 직렬화합니다 ('InvariantCulture'는 잘 맞는 것처럼 보입니다). – Oded

+0

내가 이해한다면 나는 믿기 어렵다. 십진수가 아닌 문자열을 직렬화하기 위해 XmlSerializer를 사용하고 있지 않습니까? 아니면 사용자 지정 직렬화를 사용하고 있습니까? 무슨 일이 일어나는지 보여주는 포스트 코드. – Joe

+0

예 저는 그것이 10 진수이고 확실합니다, 나에게도 믿을 수 없습니다 ... 소수점이 있습니까? 디버깅에서 값 100을 표시하지만 en-EN 로켈로 구문 분석 한 경우 xml에 100.00을 기록하고 cs-CZ 인 경우 100,00을 씁니다. 이제 집에서 더 많은 코드를 표시 할 수 없습니다. tfs에 접근 할 수 없다. – sasjaq

답변

1

그래서 나는 오늘 아침 후 작업을 시작 무엇을 얻을,

새로운 흥미로운 있었다 ...이 테마를 닫을 수 있습니다에, 내 자신의 질문에 답을 작성합니다. 직렬화하기 전에 문제가되는 십진수가 추가되었지만 조금 문제가 있습니다. IDictionary는 IXmlSerializable을 구현할 때까지 직렬화 할 수 없기 때문에 문제가됩니다. ReadXml 및 WriteXml을 재정의하는 두 가지 방법이 있습니다. 그리고 목표는 WriteXml에서 decimalValue.ToString()으로 사용되어 문제가되는 것입니다. 왜 그런지 모르겠지만,이 .ToString()은 제가 질문에서 묘사 한 missmatch 결과를 반환합니다. 그것이 어떻게되는지는 잘 모릅니다. 왜냐하면 테스트 프로젝트에서 완벽하게 작동하기 때문입니다. 그러나 우리의 완전한 맥락에서는 그렇지 않습니다. 멀더 요원은 생각하지만,

the truth is out there 그래서 단지 내가 무엇을해야하는지, 당신의 시간을 decimalValue.ToString(CultureInfo.InvariantCulture)

들으로 변경 decimalValue.ToString()했다.

0

지역은 온 스크린 디스플레이 용이며 사용자가 이해할 수있는 형식으로 정보를 표시합니다. 데이터가 사용자에게 표시되지 않는 경우 (메모리, 데이터베이스, over-the-wire) 항상 알려진 형식으로 직렬화하십시오. 문화 정보 측면에서 볼 때 @Oded가 지적한대로 일반적으로 InvariantCulture입니다.

이렇게하면 각 문화권이 다른 문화권에 대해 알지 못해도 한 문화권에서 다른 문화권으로 데이터를 전송할 수 있습니다.

+0

우리는 불변의 문화권에 표준 .net (de) 직렬화를 사용하고 있습니다. (정의 된 것이 있다면 확실하지 않습니다.) 우리의 문제는 단지 지역 설정을 사용하는 곳이 들어오는 데이터를 파싱하는 것입니다. 페이지에 표시 ... 사용자가 텍스트 상자에 금액을 입력 한 다음 선택된 지역 설정 (두 명의 사용자가 있는데 en-EN, 두 번째 cs-CZ) 중 하나를 구문 분석합니다. 결과는 십진수입니까? (nullable), 모든 프로세스를 돌아 다니며 (다른 지역 검사 나 처리가 없음) ...이 십진수? 내 질문에 쓸 때 XML에 직렬화됩니다. – sasjaq

+0

사용자가 데이터 입력 -> 프로그램은 사용자가 지역 설정으로 데이터를 구문 분석합니다 -> 구문 분석 데이터는 불변 문화와 함께 저장됩니다. 불변 문화로 데이터 -> 데이터가 검색되면 사용자 문화 (ko-ko 또는 cs-CZ)에서 형식화 된 데이터가 사용자에게 표시됩니다. –