VS2015支持UTF-8 with BOM编码格式处理中文、西班牙文、法文等非英文字符

Detail:

在使用VS2015编译ImageMagicK库时,由于其中源码文件带有非英文字符串,导致VS编译出错。

LANGUAGE(
	 bn	/* Bengali */,
	 GLASS,
	 "আমি কাঁচ খেতে পারি, তাতে আমার কোনো ক্ষতি হয় না।"
	 /* I can eat glass and it doesn't hurt me. */
	)
LANGUAGE(
	 bo	/* Tibetan */,
	 GLASS,
	 "ཤེལ་སྒོ་ཟ་ནས་ང་ན་གི་མ་རེད།"
	 /* I can eat glass and it doesn't hurt me. */
	)
LANGUAGE(
	 bs	/* Bosnian */,
	 WP-PANG,
	 "Fin džip, gluh jež i čvrst konjić dođoše bez moljca."
	 /* A nice jeep, a deaf hedgehog and a tough horse came without a moth. */
	)
LANGUAGE(
	 ca	/* Catalan */,
	 WP-PANG,
	 "Jove xef, porti whisky amb quinze glaçons d'hidrogen, coi!"
	 /* Young chef, bring whisky with fifteen hydrogen ice cubes, damn! */
	)
LANGUAGE(
	 ch	/* Chamorro */,
	 GLASS,
	 "Siña yo' chumocho krestat, ti ha na'lalamen yo'."
	 /* I can eat glass and it doesn't hurt me. */
	)
LANGUAGE(
	 cs	/* Czech */,
	 WP-SFD,
	 "Příliš žluťoučký kůň úpěl ďábelské ódy."
	 /* A too yellow horse moaned devil odes. */
	)
LANGUAGE(
	 cy	/* Welsh */,
	 GLASS,
	 "Dw i'n gallu bwyta gwydr, 'dyw e ddim yn gwneud dolur i mi."
	 /* I can eat glass and it doesn't hurt me. */
	)
LANGUAGE(
	 da	/* Danish */,
	 WP-SFD,
	 "Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon."
	 /* The quiz contestants ate strawberries with cream while Walther the clown was playing the xylophone. */
	)
LANGUAGE(
	 de	/* German */,
	 WP-SFD,
	 "Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich."
	 /* Twelve boxing fighters drive Viktor over the great. */
	)
LANGUAGE(
	 el	/* Greek */,
	 WP-SFD,
	 "Θέλει αρετή και τόλμη η ελευθερία. (Ανδρέας Κάλβος)"
	 /* Liberty requires virtue and mettle. (Andreas Kalvos) */
	)
LANGUAGE(
	 en	/* English */,
	 GSPECI,
	 "The quick brown fox jumps over the lazy dog."
	)
LANGUAGE(
	 enm	/* Middle English */,
	 GLASS,
	 "Ich canne glas eten and hit hirtiþ me nouȝt."
	 /* I can eat glass and it doesn't hurt me. */
	)
LANGUAGE(
	 eo	/* Esperanto */,
	 WP-SFD,
	 "Eĥoŝanĝo ĉiuĵaŭde."
	 /* Change of echo every Thursday. */
	)
LANGUAGE(
	 es	/* Spanish */,
	 WP-PANG,
	 "Jovencillo emponzoñado de whisky: ¡qué figurota exhibe!"
	 /* Whisky-intoxicated youngster — what a figure he's showing! */
	)
LANGUAGE(
	 et	/* Estonian */,
	 WP-SFD,
	 "See väike mölder jõuab rongile hüpata."
	 /* This small miller is able to jump on the train. */
	)
LANGUAGE(
	 eu	/* Basque */,
	 GLASS,
	 "Kristala jan dezaket, ez dit minik ematen."
	 /* I can eat glass and it doesn't hurt me. */
	)
LANGUAGE(
	 fa	/* Persian */,
	 MISC	/* Behdad Esfahbod (#548730) */,
	 "«الا یا اَیُّها السّاقی! اَدِرْ کَأساً وَ ناوِلْها!» که عشق آسان نمود اوّل، ولی افتاد مشکل‌ها!"
	)

编译报错:error C2001: newline in constant

VS2015仅支持UTF-8 with BOM,不支持不带签名的UTF-8。所有如果源码文件带有中文、西班牙文、法文等字符,请将文件编码修改为UTF-8 with BOM而非ASCII、非UTF-8。

My Answer:

这里使用ST将文件按UTF-8 with BOM编码另存后,再重新由VS打开,编译通过!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SM3签名是一种基于SM3散列算法的数字签名算法。在Java中,可以使用Bouncy Castle库来实现SM3签名的生成和验证。下面是一个使用UTF-8编码的Java示例: 1. 导入Bouncy Castle库 SM3签名需要使用Bouncy Castle库中的实现类。可以在Maven仓库中添加以下依赖项: ```xml <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.68</version> </dependency> ``` 2. 编写签名和验证方法 ```java import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.util.encoders.Hex; import java.nio.charset.StandardCharsets; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Security; import java.security.Signature; public class SM3SignUtil { static { Security.addProvider(new BouncyCastleProvider()); } /** * 生成SM3withSM2签名 * * @param message 待签名的数据 * @param privateKey 私钥 * @return 签名结果 * @throws Exception */ public static String sign(String message, PrivateKey privateKey) throws Exception { Signature signature = Signature.getInstance("SM3withSM2", BouncyCastleProvider.PROVIDER_NAME); signature.initSign(privateKey); signature.update(message.getBytes(StandardCharsets.UTF_8)); byte[] signBytes = signature.sign(); return new String(Hex.encode(signBytes)); } /** * 验证SM3withSM2签名 * * @param message 待验证的数据 * @param sign 签名结果 * @param publicKey 公钥 * @return 验证结果 * @throws Exception */ public static boolean verify(String message, String sign, PublicKey publicKey) throws Exception { Signature signature = Signature.getInstance("SM3withSM2", BouncyCastleProvider.PROVIDER_NAME); signature.initVerify(publicKey); signature.update(message.getBytes(StandardCharsets.UTF_8)); byte[] signBytes = Hex.decode(sign); return signature.verify(signBytes); } /** * 生成SM2密钥对 * * @return 密钥对 * @throws Exception */ public static KeyPair generateKeyPair() throws Exception { KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", BouncyCastleProvider.PROVIDER_NAME); kpg.initialize(256); return kpg.generateKeyPair(); } } ``` 3. 测试签名和验证 ```java public class SM3SignTest { public static void main(String[] args) throws Exception { // 生成密钥对 KeyPair keyPair = SM3SignUtil.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); // 待签名的数据 String message = "Hello, world!"; // 签名 String sign = SM3SignUtil.sign(message, privateKey); System.out.println("签名结果:" + sign); // 验证签名 boolean isValid = SM3SignUtil.verify(message, sign, publicKey); System.out.println("验签结果:" + isValid); } } ``` 以上就是一个简单的使用UTF-8编码的SM3签名示例,如果需要更深入地了解SM3签名的原理和细节,可以参考Bouncy Castle库中的源代码或者相关文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值