2013-07-26 2 views
2

루아가 그 문자열에 사용하는 인코딩을 볼 수 없다.루아 (Lua) 문자열 인코딩

는 문자 S [I]의 내부 수치 코드를 반환 문서, S [I + 1]를 갖고

string.byte (s [, i [, j]])

, 을 사용 ···, s [j]. i의 기본값은 1입니다. j의 기본값은 i입니다. 숫자 코드는 플랫폼에 걸쳐 반드시 휴대 할 필요는 없습니다.

사람 주위를 읽는 것은 ASCII를 사용하는 것이 좋습니다 -하지만 제게는 좋지 않습니다 -하지만 플랫폼 전반에 걸쳐 변화를 얻지는 않습니다 - 나는 ASCII와 같은 단일 인코딩을 사용한다는 본질을 생각합니다. 그냥 ASCII로 126 (또는 127) 이상을 정의하지 않기 때문에 다른 국가/OEMS/OS 등이 상위 범위에 대한 수십 년 전에 사용자 지정 ASCII 확장을 사용하고있을 수 있다는 것입니까?

[a-zA-Z]가 (가) 실행중인 모든 플랫폼에서 동일한 char 값을 갖게된다는 점이 중요합니다.

루아 문서는 여기에서 좀 더 구체적 일 수 있습니다! 이것에 흘릴 수

모든 빛을 사람이 당신이 안전하게 ASCII 파생 인코딩을 가정 할 수 꽤 확신

+2

"루아 문서는 여기에 좀 더 구체적 일 수 있습니다!" 아니, 할 수 없다. 디자인 상 휴대가 가능합니다. 각 건축업자는 그러한 서류를 제공해야합니다. –

답변

4

큰 들으을 것입니다. 그래서 당신이 관심을 갖고있는 소문자 세트는 그대로 유지됩니다.

플랫폼 간 코드 변경에 대한 메모는 Lua가 문자 인코딩에 대해 전혀 알지 못해서 OS가 손이 닿는 문자를 전혀 사용하지 않는다는 것을 의미합니다. 바이트 Linux에서는 이것이 UTF-8 일 가능성이 높습니다. 즉, ASCII 외부에서 스테핑 할 때 개별 코드 단위를 처리해야합니다. Windows에서는 필자가 시스템의 레거시 코드 페이지라고 상상할 수 있는데, 이는 서양 세계 대부분에서 라틴어 1 (CP 1252)의 일종을 의미합니다.

+0

+1 thx. [a-zA-z]의 char 코드 차이가있는 디파 아닌 시스템 인코딩이 현실적으로 존재하는 인코딩이 있는지 알고 있습니까? – Dori

+1

EBCDIC가 있습니다. 그러나 이것은 정상적인 시스템에서의 유산입니다. (그러나 금융 세계에서는 매우 활발합니다.) 요즘 ASCII에서 파생되지 않은 것을 만나기는 쉽지 않습니다. – Joey

+3

+1 ** "루아는 문자 인코딩에 대해 전혀 모른다"**. 기본적으로 Lua가 위에 구축 된 라이브러리에 따라 달라지며, 대부분은 OS 메커니즘을 기본으로 연기합니다. 따라서 다른 툴셋이나 설정, 다른 OS 사용, OS 설정 변경, OS의 사용자 설정 변경 또는 스레드 설정 변경 (Lua 제외)에 따라 Lua를 다시 빌드하면 영향을 받거나 결정할 수 있습니다. –