PHP使用fopen创建含emoji的文件名:十六进制值写法问题
如何用十六进制编码生成Emoji文件名
你用的👤是HTML实体编码,这是给网页解析器用的,不是编程语言能识别的Unicode字符表示,直接写会被当成普通字符串,所以生成的文件名是这些字符本身,而非对应的Emoji。下面是不同编程语言里的正确实现方式:
C/C++ 实现
方式1:UTF-8字节转义
大多数现代系统默认用UTF-8编码,你可以直接写Emoji对应的UTF-8十六进制字节序列(👤的UTF-8是0xF0 0x9F 0x91 0xA4):
#include <stdio.h> int main() { FILE *fp = fopen("\xF0\x9F\x91\xA4", "w"); if (fp != NULL) { fclose(fp); } return 0; }
方式2:宽字符Unicode码点转义
如果编译器支持宽字符,用\U加8位十六进制码点(U+1F464是👤的Unicode码点):
#include <stdio.h> #include <wchar.h> #include <locale.h> int main() { setlocale(LC_ALL, ""); // 开启本地化宽字符支持 FILE *fp = _wfopen(L"\U0001F464", L"w"); if (fp != NULL) { fclose(fp); } return 0; }
Python 实现
Python里直接用Unicode码点转义或者chr()函数生成字符:
# 方法1:直接用\U转义码点 with open("\U0001F464", "w") as f: pass # 方法2:用chr()转换十六进制码点 emoji_name = chr(0x1F464) with open(emoji_name, "w") as f: pass
关键要点
- 别用HTML实体
👤,编程语言不认这个格式 - 核心是用对应Emoji的Unicode码点或UTF-8字节序列来表示文件名
- 如果直接写Emoji字符,要确保代码文件保存为UTF-8编码,避免乱码问题
内容的提问来源于stack exchange,提问作者Hezi-Gangina
相关产品推荐
相关产品推荐

