我需要在 Mac Os X 中解析最近文件的默认数据库。这是通过 sed 完成的。需要注意的是,文件名存储在里面的分解的 utf-16 中。
所以,我想,(在被指向 NSString 函数之后)“我为什么不做一个小工具来处理它”。
该工具应该基本上像 cat 一样工作,它从输入中获取行,它将每一行转换为 CFStringref 对象,在希望将 CFStringref转换为预先组合的 UTF-16 之前,我将其转换回 UTF-8,并打印它。
我讨厌这么说,但我不知道这种“免费桥接”是否有效,我无意为此使用 Cocoa 和 Objective C,我只想使用 CFStringref 直接解决,也就是说,如果这样的解决方案存在!
谢谢!
这是我到目前为止所得到的:
#define BUFFERSIZE 512
static void
precomposedOutput( char *fn )
{
char buffer[BUFFERSIZE] ;
CFStringRef str ;
char *outbuf;
char *bytes ;
FILE *fd = stdin ;
if (fn) {
fd = fopen(fn,"r");
}
while ( fgets(buffer, sizeof(buffer),fd ) ) {
bytes = savestr(buffer) ;
str = CFStringCreateWithCStringNoCopy(NULL, bytes,kCFStringEncodingUTF8, NULL);
/* CONVERSION INTO PRECOMPOSED IS SUPPOSED TO HAPPEN HERE */
outbuf = Copy_CFStringRefToCString(str) ;
CFRelease(str) ;
fputs(outbuf,stdout) ;
free(outbuf) ;
}
}
到目前为止,这似乎在来回转换方面有效(而不是在其上运行泄漏。)我需要帮助的是将 CFString 转换为预先组合的 UTF-16。
谢谢!