모듈:디코드엔코드
Module| 이 모듈은 일반적으로 사용할 수 있는 것으로 평가됩니다.그것은 성숙한 형태에 도달했고, 상대적으로 버그가 없으며 적절한 곳이라면 어디서나 사용할 수 있는 것으로 생각됩니다.새로운 사용자가 학습할 수 있는 옵션으로 도움말 페이지 및 기타 위키백과 자료에 언급할 준비가 되어 있습니다.서버 로드 및 불량 출력을 줄이려면 반복적인 시행착오 편집보다 샌드박스 테스트를 통해 개선해야 합니다. |
| 이 Lua 모듈은 약 115,000 페이지에서 사용됩니다. 큰 중단과 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 하위 페이지 또는 자체 모듈 샌드박스에서 변경 사항을 테스트해야 합니다.테스트된 변경 사항은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.변경사항을 구현하기 전에 대화 페이지에서 변경사항에 대해 논의하는 것을 고려합니다. |
모듈에서 Lua 함수 mw.text.decode, mw.text.encode를 구현합니다.
{{#invoke:decodeEncode decode s=Source text©}}→Source text©
XML 및 HTML 문자 도면요소 참조 목록을 참조하십시오.
디코딩(© → ©)
잘 정의된 명명된 엔티티는 모두 디코딩됩니다(HTML 명명된 문자 참조, 공식적으로는: PHP 테이블에 정의된 대로).
- 규칙적으로 렌더링된 문장:
- "화씨 100도에서, 그리고 태양이 "타는" 상공에서, 우리는 "걸었습니다".
- 코드:
- "
At 100 °F, & with a "burning" sun above, we ⁄walked⁄.-- 위키텍스트
- "
- 처리:
{{#invoke:decodeEncode decode s=At 100 °F, & with a "burning" sun above, we ⁄walked⁄.}}→At 100 °F, & with a "burning" sun above, we ⁄walked⁄.코드에서는 직선 문자, 명명된 엔티티가 없습니다.
- 렌더링, 다시:
- "화씨 100도에서, 그리고 태양이 "타는" 상공에서, 우리는 "걸었습니다".
축소된 세트만 디코딩합니다.
설정별 subset_only=true'<', '>', '&', '&', '", '"(즉, '<, ', ', ', ', ', ', '로)'의 다섯 개의 엔티티 이름만 디코딩됩니다.
- 참고: 관련 Lua 파라미터와 차이가 있습니다.(이것은 Lumamw.text.decode 함수로도 직접 작업하는 경우에만 작업과 관련이 있습니다.)Lua 설명서는 매개 변수를 정의합니다.
decodeNamedEntities=이러한 효과가 있음: 생략되거나 거짓인 경우 축소된 엔티티 집합만 인식되고 디코딩됩니다.이러한 'false' 사용은 다음과 같은 경우에 역으로 사용됩니다.subset_only=:decodeNamedEntities=false=subset_only=true.
- 또한 이 모듈은 "누락된" 논리를 무시합니다.
subset_only=활성화하려면 'true'로 명시적으로 설정해야 합니다.
인코딩(© → ©)
- 기능.
encode일부 엔티티 이름 문자를 해당 이름으로 인코딩합니다(예:&→&).
정규 문장:
- "화씨 100도 이상에서, 그리고 "타는" 태양을 위에 두고, 우리는 걸었습니다. ©"
코드:
- "
At >100 °F, & with a "burning" sun above, we walked. ©"
인코딩:
{{#invoke:decodeEncode encode s=At >100 °F, & with a "burning" sun above, we walked. © charset=&<>{{!}}°"'&©}}
- →
At >100 °F, & with a "burning" sun above, we walked. ©
- 렌더링 형식:
- "화씨 100도 이상에서, 그리고 "타는" 태양을 위에 두고, 우리는 걸었습니다. ©"
인코딩할 문자 집합
Lua 설명서에 따라 작은 문자 집합만 처리됩니다.문자 집합은 다음을 사용하여 설정(확장)할 수 있습니다. charset=.
- 예:
charset=<>" \'&(기본값),charset=<>°"'&©{{!}}기본값이 아닌 문자는 소수점 문자로 대체됩니다.©→©(십진수 또는 명명된 ©가 아닌 16진수;)
알려진 문제
- 2021년 9월 13일: 참고:사용자 제공 문자 집합이 있는 인코딩 기능은 이제 {{R/superscript}} 및 {{R/ref}}에서 생산적으로 사용됩니다.여기서 변경 사항을 구현하기 전에 템플릿을 적절히 조정해야 합니다!
- 2021년 9월 26일:U+2009 씬스페이스( , &thinSpace;)
- 참고: 가능한 버그:디코딩
 작동하지만, Doesn't. - 코드로 해결되었습니다.
- 2023년 2월 4일:U+03B5 ε 그리스 문자 EPSILON(ε, ε)
- 모듈 대화 참조:Decode Encode § Bug 보고서: U+03B5 ε(엡실론)의 잘못된 디코딩입니다.
- 코드로 해결되었습니다.
참고 항목
요구하다('''비공식''') 현지의 p = {} 현지의 기능. _Boolean을 구함( boolean_str ) 시작: 모듈:현악기;적응형 명시적 참이 필요합니다. 현지의 boolean_value 한다면 유형( boolean_str ) == '끈' 그리고나서 boolean_str = boolean_str:더 낮게() 한다면 boolean_str == '참' 또는 boolean_str == '예' 또는 boolean_str == '1' 그리고나서 boolean_value = 진실의 또 다른 boolean_value = 거짓의 끝. 그렇지 않으면 유형( boolean_str ) == '''비공식''' 그리고나서 boolean_value = boolean_str 또 다른 boolean_value = 거짓의 끝. 돌아가다 boolean_value 끝. 기능. p.암호를 해독하다( 틀 ) 현지의 s = 틀.논병아리['s'] 또는 '' 현지의 부분 집합_전용 = _Boolean을 구함(틀.논병아리['filename_only'] 또는 거짓의) 돌아가다 p._지루한( s, 부분 집합_전용 ) 끝. 기능. p._지루한( s, 부분 집합_전용 ) U+2009 ThIN SPACE: 버그 해결 방법: HTML 엔티티  이(가) 잘못 디코딩되었습니다.엔티티 & ThinSpace;가 제대로 디코딩되었습니다. s = mw.ustring.gsub( s, ' ', ' ' ) U+03B5 ε 그리스어 작은 글자 EPSILON: 버그 해결 방법(phab:T328840): gsub()에 대해 HTML 엔티티 ε이(가) 잘못 디코딩되었습니다.엔티티 ε가 올바르게 디코딩됩니다. s = mw.ustring.gsub( s, 'ε', '" ) 현지의 리트 = mw.본문.암호를 해독하다( s, 것은 아니다. 부분 집합_전용 ) 돌아가다 리트 끝. 기능. p.부호화( 틀 ) 현지의 s = 틀.논병아리['s'] 또는 '' 현지의 문자 집합 = 틀.논병아리['문자 집합'] 돌아가다 p._지루한( s, 문자 집합 ) 끝. 기능. p._지루한( s, 문자 집합 ) 예: 문자 집합 = '_&©-°\-- %가 아닌 백슬래시로 탈출합니다; 현지의 리트 한다면 문자 집합 그리고. 문자 집합 ~= '' 그리고나서 리트 = mw.본문.부호화( s, 문자 집합 ) 또 다른 기본값 사용: chartset = '<>&"\' '(따옴표 = lua 필요, 공백 = NBSP) 리트 = mw.본문.부호화( s ) 끝. 돌아가다 리트 끝. 돌아가다 p