Lösung für verstümmelten Linux-Socket-Code: 1. Öffnen Sie das Terminal-Befehlsfenster. 2. Verwenden Sie den Befehl iconv, um den Zeichensatz der Linux-Datei zu konvertieren. Der Konvertierungsbefehl lautet beispielsweise „iconv -f utf-8 -t gb2312 /server_test/“. Reports/software_.txt > ;/server_test/reports/software_asserts.txt".
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.
Was soll ich tun, wenn der Linux-Socket verstümmelt ist?
Linux, Windows, Socket-Verstümmelungsproblem
Problembeschreibung:
Es gibt einen FTP-Client, den ich unter Linux geschrieben habe, und es gibt einen FTP-Server in Windows, der die mit Windows gelieferte Software verwendet Der Server Beim Erstellen eines Verzeichnisses mit Chinesisch oder eines Dateinamens mit Chinesisch ist der chinesische Name verstümmelt
Problemanalyse:
Dies wird zweifellos durch ein Codierungsproblem verursacht. Wie kann also bestätigt werden, welche Codierung verwendet werden soll? Baidu entdeckte später, dass Ubuntu standardmäßig UTF-8 verwendet, während Windows standardmäßig GBK verwendet. Stellen Sie daher sicher, dass Inhalte mit chinesischen Pfaden beim Versenden in GBK konvertiert werden
Lösung:
Konvertieren Sie zwischen UTF8 und gbk:
Linux-Dateizeichensatzkonvertierung (utf8-gb2312)
Zuerst Befehlszeile
Wenn Sie die Kodierungskonvertierung unter Linux durchführen, können Sie dies mit dem Befehl iconv erreichen angegebene Datei von einer Kodierung in eine andere. Die Verwendung des Befehls
iconv lautet wie folgt:
iconv [选项...] [文件...]
Spezifikation des Eingabe-/Ausgabeformats:
-f, --from-code=名称 原始文本编码 -t, --to-code=名称 输出编码
Alle bekannten Zeichensätze auflisten -l, --list
Ausgabesteuerung:
-c 从输出中忽略无效的字符 -o, --output=FILE 输出文件 -s, --silent 关闭警告 --verbose 打印进度信息
Beispiel:
iconv -f utf-8 -t gb2312 /server_test/reports/software_.txt > /server_test/reports/software_asserts.txt
Bitte laden Sie die libiconv-Bibliothek für die folgenden erforderlichen Bibliotheksdateien herunter
Zweitens, Funktionsanwendung
1. Funktion
(1) iconv_t iconv_open( const char *tocode, const char *fromcode);
Diese Funktion erklärt, welche zwei Codierungen konvertiert werden, tocode ist die Zielcodierung und fromcode ist die ursprüngliche Codierung. Diese Funktion gibt ein Konvertierungshandle zur Verwendung durch die folgenden beiden Funktionen zurück.
(2) size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);
Diese Funktion liest Zeichen aus inbuf, konvertiert sie und gibt sie nach outbuf aus, inbytesleft wird verwendet Um die Anzahl der nicht konvertierten Zeichen aufzuzeichnen, wird outbytesleft verwendet, um den verbleibenden Speicherplatz des Ausgabepuffers aufzuzeichnen.
(3) int iconv_close(iconv_t cd);
Diese Funktion wird verwendet, um das Konvertierungshandle zu schließen und Ressourcen freizugeben.
3. Beispiel: Konvertierungsbeispielprogramm in C-Sprache implementiert
#include <iconv.h>
Diese Implementierung kann plattformübergreifend sein, und ich persönlich denke, dass es besser ist~
ps: Der FTP-Client, den ich zuvor erstellt habe, war unter Windows, weil Party A sagte Es würde dorthin verpflanzt werden, ich bin auf Windows umgestiegen und dann ist das oben genannte Problem aufgetreten. Obwohl ich die im Projekt erschienenen chinesischen Lösungen verglichen habe, habe ich zumindest Erfahrungen bei der Lösung des Problems gesammelt (nicht auf Chinesisch, sondern auf Pinyin)
Verwandte Empfehlungen: „
Linux-Video-TutorialDas obige ist der detaillierte Inhalt vonWas tun, wenn der Linux-Socket fehlerhaft ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!