This may be due to a column mapping in your table.
Check out this sample request.
DECLARE @table table(c varchar(50) collate SQL_Polish_Cp1250_CI_AS )
insert into @table values(N'Kraków')
DECLARE @table2 table(c varchar(50) collate SQL_Latin1_General_Cp1_CS_AS )
insert into @table2 values(N'Kraków')
select dbo.fn_PolskieZnaki_utf8('Kraków'),dbo.fn_PolskieZnaki_utf8(c) from @table
select dbo.fn_PolskieZnaki_utf8('Kraków'),dbo.fn_PolskieZnaki_utf8(c) from @table2
Conclusion:
Kraków KrakA3w
Kraków Kraków
EDIT
In addition to the above, in your function when using REPLACEyou are missing Nbefore the search character 'Ä,,', N'Ą'). It should be like that N'Ä,,', N'Ą').
The updated function will look as follows.
ALTER FUNCTION [dbo].[fn_PolskieZnaki_utf8](@string NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
begin
RETURN REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
(@string,
N'Ä,,', N'Ą'),
N'Ä...', N'ą'),
N'Ć', N'Ć'),
N'ć', N'ć'),
N'Ę', N'Ę'),
N'Ä™', N'ę'),
N'Å', N'Ł'),
N'Å,', N'ł'),
N'Ń', N'Ń'),
N'Å„', N'ń'),
N'Ã"', N'Ó'),
N'ó', N'ó'),
N'Åš', N'Ś'),
N'Å›', N'ś'),
N'Ź', N'Ź'),
N'Ű', N'ź'),
N'Å»', N'Ż'),
N'ż', N'ż')
end
:
COLLATE
N T-SQL?