현재 위치: > 최신 기사 목록> FGETS로 인한 다국어가 달린 문제를 피하는 방법은 무엇입니까? 실용적인 솔루션

FGETS로 인한 다국어가 달린 문제를 피하는 방법은 무엇입니까? 실용적인 솔루션

gitbox 2025-08-27
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 이 부분은 기사의 내용과 관련이 없습니다.,일반적인 구성 또는 주석을 배치하는 데 사용할 수 있습니다</span></span><span>
</span><span><span class="hljs-comment">// 예를 들어:상수를 정의하십시오、구성 파일을로드합니다.</span></span><span>
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'APP_NAME'</span></span><span>, </span><span><span class="hljs-string">'다국어 처리 도구'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>피하는 방법 fgetss 다국어가 달린 문제로 인해 발생했습니다?실용적인 솔루션</h1>

<p>존재하다 PHP 가운데,<code></span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>()

2. PHP에서 올바른 인코딩을 지정하십시오

내용을 읽은 후 MB_CONVERTT_ENCODING ()을 사용하여 문자열을 대상 인코딩으로 변환 할 수 있습니다.

 &lt;?php
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'multilang.txt'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-number">4096</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-comment">// 파일 인코딩이 GBK,로 돌아갑니다 UTF-8</span></span><span>
        </span><span><span class="hljs-variable">$utf8Line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'GBK'</span></span><span>);
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$utf8Line</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    }
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
}
?&gt;

여기서 MB_CONVERTT_ENCODING 의 세 번째 매개 변수는 파일의 원래 인코딩이고 첫 번째 및 두 번째 매개 변수는 각각 대상 인코딩 및 입력 문자열입니다.

3. 페이지 인코딩을 설정합니다

예를 들어 출력 HTML 페이지에 올바른 인코딩 선언이 있는지 확인하십시오.

 &lt;meta charset=</span><span><span class="hljs-string">"UTF-8"</span></span><span>&gt;

이러한 방식으로 브라우저는 컨텐츠 인코딩을 올바르게 식별하고 차량 코드 디스플레이를 피할 수 있습니다.

4. PHP 내장 기능을 사용하여 인코딩을 감지하십시오

mb_detect_encoding ()을 사용하여 데드 인코딩을 쓰지 않도록 인코딩을 자동으로 감지 할 수 있습니다.

 &lt;?php
</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgetss</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-number">4096</span></span><span>);
</span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_detect_encoding</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, [</span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'GBK'</span></span><span>, </span><span><span class="hljs-string">'BIG5'</span></span><span>], </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$encoding</span></span><span> !== </span><span><span class="hljs-string">'UTF-8'</span></span><span>) {
    </span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-variable">$encoding</span></span><span>);
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>;
?&gt;

5. fgetss () 사용하지 마십시오.

HTML 태그를 순전히 필터링하는 경우 fgets ()를 Strip_tags () 와 결합하여 인코딩 처리가 더 유연하게 사용하는 것을 고려하십시오.

 &lt;?php
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'multilang.txt'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>);
        </span><span><span class="hljs-comment">// 인코딩 변환 프로세스는 위와 동일합니다</span></span><span>
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>;
    }
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
}
?&gt;

3. 요약

  • 파일 및 페이지 인코딩은 일관성이 있어야하며 UTF- 8을 통합 방식으로 사용하는 것이 좋습니다 .
  • 읽은 후 MB_CONVERTT_ENCODING ()을 사용하여 인코딩을 변환하여 문자가 정상적으로 표시되도록하십시오.
  • fgetss () 의 인코딩 가정에 직접 의존하지 않고 fgets ()strip_tags ()를 결합하여 호환성을 향상시킵니다.
  • 페이지는 브라우저가 정상적으로 구문 분석하기 전에 올바른 인코딩을 선언해야합니다.

위의 방법을 통해 개발자는 FGETSS () 로 인한 다국어가 달린 문제를 효과적으로 피하고 프로그램의 다국어 텍스트 처리의 안정성과 가독성을 보장 할 수 있습니다.