我将我的数据作为 UTF8 存储在我的 MSSQL 中(我确定它是 UTF8),我使用 Visual Studio 调试工具,我可以看到我的字符串为 UTF8(因为某些字符只在 UTF8 中退出,而不是 big5),但是在我使用之后PHP 通过 IIS fastCGI 显示我的数据,结果是 big5!。
我建立了一个简单的类来测试它。你可以试试。
using System.EnterpriseServices;
using System.Runtime.InteropServices;
namespace CoreService.HTML
{
public interface ICore
{
string get_string();
}
public class Core : ServicedComponent, ICore
{
public string get_string()
{
return "堃";
}
}
}
如果你得到字符而不是 ?? 那么你做对了。但是在我的 PHP 中调用 COM+ 之后,我总是会变大。我尝试了apache,它仍然是一样的。
更新:
PHP 示例代码:
$object = new COM("CoreService.HTML.Core") or die("Unable to instantiate CoreService COM object");
echo $object->get_string();
COM+ 安装批处理文件:(install.bat)
cd\
c:
cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\
gacutil /i "c:\Fashion DLL\CoreService.dll"
echo install CoreService.dll Done
cd\
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
regsvcs /u "c:\Fashion DLL\CoreService.dll"
regsvcs "c:\Fashion DLL\CoreService.dll"
echo FashionCoreService done
如果您想重试,您可以使用它来卸载 tlb 文件或文件被 IIS 或 apache 锁定:
cd\
c:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
regsvcs /u "c:\Fashion DLL\CoreService.dll"
regasm /u "c:\Fashion DLL\CoreService.dll"
echo remove FashionCoreService done
iisreset
del "c:\Fashion DLL\CoreService.tlb"
pause