문제

공유 웹 호스팅에서 CRON과 함께 실행하는 레이크 작업 (LIB/Tasks Directory)이 있습니다. 문제는 case 문화를 사용하여 UTF-8 문자열을 비교하고 싶지만 소스 코드가 UTF-8 인코딩되지 않았다는 것입니다. 소스 코드를 UTF-8로 저장하면 시작하려고 할 때 오류가 있습니다.

내가 뭘해야하나요?

외부 UTF-8 TXT 파일 에서이 문자열을 읽을 수 있습니까?

추신 나는 루비 1.8을 사용하고있다

추신 : 나는이 방법을 비교한다는 의미입니다.

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
도움이 되었습니까?

해결책

BOM은 텍스트 편집기를 변경해야한다고 말하고 싶습니다. ~ 아니다 UTF-8에 필요합니다. UTF-8은 바이트 주문 의존적이지 않습니다. 보다 링크 텍스트 자세한 내용은.

다른 팁

내 문제가 사건에 대한 것이 아니라는 것을 알았습니다.

문제는 소스 코드를 UTF-8 형식으로 저장하면 텍스트 편집기가 처음에 3 바이트 (BOM)를 추가하여 인코딩이 UTF-8임을 나타냅니다.

Q : BOM이란 무엇입니까?

ㅏ: 바이트 주문 마크 (BOM)는 데이터 스트림의 시작 부분의 문자 코드 U+FEFF로 구성되며, 주로 표시되지 않은 일반 텍스트 파일의 바이트 순서 및 인코딩 양식을 정의하는 서명으로 사용할 수 있습니다. 일부 더 높은 수준의 프로토콜에서, 해당 프로토콜에 정의 된 유니 코드 데이터 스트림에서 BOM의 사용은 필수 (또는 금지) 될 수있다.

UTF-8, UTF-16, UTF-32 & BOM

내가 얻는 오류는 다음과 같습니다.

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression

사용해보십시오 mb_chars 레일의 방법 ActiveSupport 뼈대:

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top