将单字节字符串转换为双字节字符串

7

我希望将字符串Game转换为Game。这个字符串是一个日语双字节字符串。

使用PHP是否可以实现?如果可以,如何实现?


使用适当的编码和 mb_convert_encoding() 函数。 - Mark Baker
@MarkBaker:我会尝试在 PHP 中使用 mb_convert_encoding(),但在 MySQL 部分...是否有任何函数可以实现这一点?因为我的可能解决方案将直接基于查询。 - stryker
如果您需要在MySQL中执行此操作,请使用CONVERT()或CAST() - Mark Baker
什么编码?UTF-16? - tadman
@tadman:在PHP中,这更可能是UTF8 => SJIS-win。或者在MySQL中是utf8 => sjis(Shift-JIS日语)。 - stryker
3个回答

5

首先,Game 不是 ASCII 字符集,因此您可能需要设置页面 Content-type 头才能看到正确的输出:

header("Content-type: text/html; charset=utf-8");

然后,您可以使用此函数将其转换
echo mb_convert_kana('Game', "R", 'UTF-8')

编辑:

对于MySQL,我找不到一个能够实现相同功能的转换器。但是你仍然可以手动在十六进制级别上进行转换,例如,你可以这样得到单词 Game

SELECT CHAR(0xefbca7, 0xefbd81, 0xefbd8d, 0xefbd85) as `Full Width`;

因此,我们可以在MySQL中编写一个映射函数,使用这个表格替换字符。


@KraneBird:感谢你在 PHP 部分的回答...但是在 MySQL 部分,有没有办法实现这个? - stryker

0

嗯,不能确定我是否正确理解了你的问题,但以下控制台一行代码:

$ php -r 'var_dump(mb_convert_encoding("Game", "UCS-2"));'

给我以下内容:

string(8) "\000G\000a\000m\000e"

这是你想要的吗?正如Mark Baker所说,对于你来说只需要使用mb_convert_encoding函数。


你会如何确定使用哪种编码?也许可以使用 mb_detect_encoding 吗? - Amal Murali
你需要转换到多字节编码啊!我猜测你有输入字符串的控制权,也知道要转换成什么编码格式。可以选择Shift-JIS或者EUC编码。我使用UCS-2是因为你明确指定了这是一个由两个字节构成的Unicode编码。 - hijarian
这仍然不会将 Game 转换为 Game - Amal Murali

-1

这与我想要的转换相反。我想要这种类型的转换:'Game' => 'Game'。 - stryker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接