gpt4 book ai didi

c - 在 C 中解码 Unicode(韩语)字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:54 29 4
gpt4 key购买 nike

我正在用 C 语言制作一个网络服务器。我需要从 url 获取参数以进行计算。问题是人们可以在一个字段(名称)中键入 unicode 字符。然而,当我的服务器收到那个请求时,这些 un​​icode 字符变成了我不理解的东西。例如:

http://192.168.1.1:10001/reg_me?name=박우중&studentid=2012003427

成为

http://192.168.1.1:10001/reg_me?name=%EB%B0%95%EC%9A%B0%EC%A4%91&studentid=2012003427

所以我无法获取该字段。有什么方法可以解码这些奇怪的字符以获得原始字符吗?

最佳答案

我已将您的三个韩语标志保存到一个名为korean 的文件中,并将其放在我从下面的 C 源代码生成的可执行文件旁边:

#include <stdio.h>

int main( ) {

FILE * fp;

fp = fopen( "korean", "r" );

if ( fp == NULL ) {
printf( "Failure at line %d\n", __LINE__ );
return -1;
}

int currentchar;
while ( ( currentchar = fgetc( fp ) ) != EOF ) {
printf( "%%%X ", currentchar );
}

putchar( 10 );
return 0;
}

前两个百分号 %% 只是在我的 %X 之前有一个百分号,它将打印 currentchar十六进制,大写。您可以将其视为特定于 % 的转义序列。输出是:

%EB %B0 %95 %EC %9A %B0 %EC %A4 %91

您可能已经意识到,这正是您报告的序列。您可以使用这个事实将这些值解码回您的韩文字符。让我们恢复这个过程;将带有百分号且不含空格的百分号编码序列保存到文件中,将文件命名为percentencoded,并使用以下 C 源代码:

#include <stdio.h>

int main( ) {

FILE * decodee;
FILE * percentencoded;

decodee = fopen( "decodee", "w" );
percentencoded = fopen( "percentencoded", "r" );

if ( decodee == NULL || percentencoded == NULL ) {
printf( "Failure at line %d\n", __LINE__ );
return -1;
}

int currentchar;
while ( fscanf( percentencoded, "%%%X", &currentchar ) == 1 ) {
fputc( currentchar, decodee );
}

putchar( 10 );
return 0;
}

percentencoded 文件中包含以下内容:

%EB%B0%95%EC%9A%B0%EC%A4%91

生成的文件 decodee 现在包含以下内容:

박우중

我希望这能以某种方式帮助你......

关于c - 在 C 中解码 Unicode(韩语)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24142568/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com